meta-openembedded: subtree update:459dbf1078..ea8604a0e3

Adrian Bunk (6):
      xfsprogs: Remove obsolete patch
      gpsd: Add a PACKAGECONFIG for disabling usb support
      libqmi: Upgrade 1.24.0 -> 1.24.2
      enchant2: Upgrade 2.2.3 -> 2.2.7
      geany-plugins: Use enchant2 instead of the old enchant
      enchant2: Remove, moved to oe-core

Alex Kiernan (11):
      nftables: Fix documentation generation
      ldns: Add recipe
      ostree: Fix DISTRO_FEATURES with ptest but w/o xattr
      ostree: Drop tests for soup/xattr with ptest
      ostree: Change PACKAGECONFIG to use manpages
      ostree: Add PACKAGECONFIG for builtin-grub2-mkconfig
      ostree: Backport build/test fixes from upstream
      ostree: Upgrade 2019.5 -> 2019.6
      ostree: Add support for gjs tests
      nftables: Expand PACKAGECONFIG, cleanup build
      ostree: Tidy FILES_${PN} using PACKAGE_BEFORE_PN

Alexander Kanavin (1):
      enscript/indent/sharutils: fix build with gettext 0.20.x

Alistair Francis (2):
      mycroft: RDEPENDS on mpg123 to allow singing
      openocd: Enable remote-bitbang build option

Andreas Müller (76):
      gnome-system-monitor: add gsettings to inherit
      tracker-miners: initial add 2.3.1
      nautilus: add tracker-miners to RDPENDS
      libgnomekbd: cleanup DEPENDS inherit gsettings / remove unused config
      nodejs: Add PACKAGECONFIG share to allow other projects to use node as library
      xserver-xorg-cvt-native: initial add 1.20.5
      mutter: initial add 3.34.1
      pinpoint: remove dead project
      gnome-keyring: upgrade 3.28.2 -> 3.34.0
      libgsf: upgrade 1.14.45 -> 1.14.46
      libgnome-keyring: remove
      gvfs: upgrade 1.41.2 -> 1.42.1
      grilo: initial add 0.3.10
      gsound: initial add 1.0.2
      gnome-backgrounds: initial add 3.34.0
      metacity: upgrade 3.32.0 -> 3.34.1
      gjs: initial add 1.58.3
      gdm: re-add 3.34.1
      gnome-shell: initial add 3.34.1
      gnome-shell-extensions: initial add 3.34.1
      accountsservice: initial add 0.6.55
      rest: initial add 0.8.1
      gnome-online-accounts: initial add 3.34.1
      gnome-control-center: re-add 3.34.1
      gnome-session: inital add 3.34.1
      gnome-panel: (re)add 3.34.1
      gnome-flashback: initial add 3.34.1
      Add: packagegroup-gnome-apps / packagegroup-gnome-desktop
      glfw: add features_check to inherit
      stalonetray: Add x11 to required distro feature
      projucer: add x11 to required distro features
      colord-gtk: add polkit to required distro features
      yelp: add x11 to required distro features
      file-roller: remove nautilus from DEPENDS
      libgdata: add x11 to required distro features
      accountsservice: Hack musl build fix
      accountsservice: fix build for systemd not in DISTRO_FEATURES
      gnome-font-viewer: fix copy & paste typo in SUMMARY
      libxfce4ui: give up glade3 (=glade for gtk2) support
      glade3: remove ancient version of glade
      exo: remove pythonnative from inherit
      geany: remove pythonnative from inherit
      gnome-tweaks: initial add 3.34.0
      libhandy: initial add 0.0.12
      fluidsynth: upgrade 2.0.9 -> 2.1.0
      exo: upgrade 0.12.10 -> 0.12.11
      tumbler: upgrade 0.2.7 -> 0.2.8
      catfish: upgrade 1.4.10 -> 1.4.11
      cppunit: upgrade 1.14.0 -> 1.15.1
      xfce4-terminal: upgrade 0.8.8 -> 0.8.9
      gnome-calculator: initial add 3.34.1
      evince: upgrade 3.34.1 -> 3.34.1
      file-roller: upgrade 3.32.2 -> 3.32.3
      evolution-data-server: upgrade 3.34.1 -> 3.34.2
      gedit: upgrade 3.34.0 -> 3.34.1
      gnome-autoar: upgrade 0.2.3 -> 0.2.4
      gnome-control-center: upgrade 3.34.1 -> 3.34.2
      gnome-desktop3: upgrade 3.34.1 -> 3.34.2
      gnome-flashback: upgrade 3.34.1 -> 3.34.2
      gnome-session: 3.34.1 -> 3.34.2
      gnome-settings-daemon: upgrade 3.34.1 -> 3.34.2
      gnome-shell-extensions: upgrade 3.34.1 -> 3.34.2
      gnome-shell: upgrade 3.34.1 -> 3.34.2
      gvfs: upgrade 1.42.1 -> 1.42.2
      libgdata: upgrade 0.17.10 -> 0.17.11
      mutter: upgrade 3.34.1 -> 3.34.2
      nautilus: upgrade 3.34.1 -> 3.34.2
      yelp-xsl: upgrade 3.34.0 -> 3.34.2
      poppler: upgrade 0.82.0 -> 0.84.0
      xfce4-terminal: upgrade 0.8.9 -> 0.8.9.1
      mutter: upgrade 3.34.2 -> 3.34.3
      gnome-shell: upgrade 3.34.2 -> 3.34.3
      evolution-data-server: upgrade 3.34.2 -> 3.34.3
      gjs: upgrade 1.58.3 -> 1.58.4
      gnome-desktop3: upgrade 3.34.2 -> 3.34.3
      libsigc++-3: let meson build

Andrei Gherzan (1):
      kernel-selftest: Include rtc tests

Andrej Valek (1):
      ntp: split ntpdc into separate package

Andrey Zhizhikin (1):
      flatbuffers: add PIC compiler flag required for aarch64

André Draszik (4):
      python3-jsonrpcserver: update to v4.1.0
      python3-jsonrpcserver: allow to use as non-root
      oniguruma: update to v6.9.4
      oniguruma: enable ptest

Armin Kuster (3):
      glfw: missing feature check.
      libvncserver: fix build depends issue
      surf: Add opengl requirement

Bartosz Golaszewski (10):
      librsync: new package
      xdelta3: update to v3.1.0
      xdelta3: add native and nativesdk to BBCLASSEXTEND
      speedtest-cli: new package
      doxygen: upgrade v1.8.16 -> v1.8.17
      libsigrok: upgrade v0.5.1 -> v0.5.2
      libsigrokdecode: upgrade v0.5.2 -> v0.5.3
      libsigrok: add support for bluetooth integration
      cloc: new package
      libsigrok: add support for hidapi integration

Changqing Li (5):
      samba: fix wrong shebang for python3
      gtk-xfce-engine: remove this recipe
      xfce4-kbdleds-plugin: remove this recipe
      xfce-dusk-gtk3: correct invalid SRC_URI
      libhugetlbfs: update patch to make it work for python3

Denys Dmytriyenko (1):
      netperf: add "intervals" and "histogram" PACKAGECONFIGs

Diego Rondini (2):
      cups-filters: add recipe
      qpdf: add recipe

Fabio Berton (1):
      nanopb: Add recipe for version 0.4.0

Gianfranco Costamagna (6):
      boinc: update recipe to version 7.16.3
      vboxguestdrivers: update to version 6.1.0 and unblacklist
      websocketpp: add various upstream accepted and proposed patches to fix various issues, including:
      brotli: rename static libraries avoding the -static suffix.
      cpprest: fix cmake installation directory
      websocketpp: also install examples in a new -examples subpackage

Hongxu Jia (2):
      gvfs: add user polkitd and missing depends
      python3-astor: fix VERSION file not found

Jacopo Dall'Aglio (1):
      netplan: add recipe

Jens Rehsack (6):
      log4cplus: update to 2.0.5
      libstatgrab: add logging/tracing options
      libtest-warnings-perl: add recipe
      libfile-slurper-perl: add recipe
      libconfig-autoconf-perl: add recipe
      libunix-statgrab: add recipe

Kai Kang (12):
      blueman: disable appindicator support
      xfce4-panel-profiles: 1.0.8 -> 1.0.9
      exo: 0.12.9 -> 0.12.10
      thunar: 1.8.9 -> 1.8.10
      fltk: fix build error when enable package config examples
      corosync: fix build error when package config rdma enabled
      rdma-core: 18.1 -> 27.0
      openl2tp: update systemd service file
      bdwgc: make libatomic-ops as dependency
      volume-key: not create python2 bindings
      libbytesize: disable doc build
      adduser: set default shell with /sbin/nologin

Khem Raj (113):
      python-evdev: Fix build for 32bit arches with 64bit time_t
      x11vnc: Fix build for 32bit arches with 64bit time_t
      evtest: Fix build for 32bit arches with 64bit time_t
      lirc: Fix build for 32bit arches with 64bit time_t
      v4l-utils: Update to 1.18.0
      tslib: Fix build for 32bit arches with 64bit time_t
      utouch-evemu,utouch-frame: Fix build for 32bit arches with 64bit time_t
      directfb: Fix build for 32bit arches with 64bit time_t
      kernel-module-emlog: Use compile task from module bbclass
      emlog: Use RRECOMMEND instead of RDEPEND
      projucer: Upgrade to 5.4.5
      packagegroup-meta-oe: Remove nodejs and uim on riscv
      libnih: Fix build with latest gettext
      liblockdev: Loosen the regexp for py3
      sigrok-cli: Update to 0.7.1
      python-pywbem: Update to 0.15.0
      udisks2: Update to 2.8.4
      id3lib: Update to newer debian patchset
      libdc1394: Update to 2.2.6 release
      libsmi: Use right name for tcl license
      hdf5: Upgrade to 1.8.21
      xterm: Fix latent issue found with musl
      mozjs: extend --with-intl-api=build to all mips
      klibc: Apply -no-integrated-as on mips/clang
      grpc: Define libdir and cmakedir in terms of multilib
      ufs-utils: Renames from ufs-tool
      breakpad: Update to latest upstream
      rsyslog: Sync VALGRIND supported arch list
      packagegroup-meta-oe: Remove ppc64 specific incompatible packages
      libpfm4: Moved here from oe-core
      rdma-core: Replace pthread_yield with sched_yield
      fvwm: Upgrade to 2.6.9
      nlohmann-json: Upgrade to 3.7.3
      libqb: Add --enable-nosection-fallback with mips64/clang
      lcdproc: Upgrade to latest top of tree
      tinyalsa: fix installation libdir path to match multilibs
      luajit: Add ppc/ppc64 to unsupported arch list
      rsyslog: Do not assume atomic built-ins on ppc
      hiredis: Upgrade to 0.14.0
      libfann: Define LIB_SUFFIX suitable for OE multilib needs
      libgit2: Upgrade to 0.28.4
      libinih: Fix multilib build
      poco: Define LIB_SUFFIX per OE multilibs
      libcec: Fix multilib build
      dfu-util-native,sjf2410-linux-native: Fix Deploy in multimachine builds
      mpv: Remove luajit dependency for ppc64
      cannelloni: Update to latest and fix multilib builds
      nvme-cli: Use nonarch libdir for dracut config files
      cli11: Fix multilib build
      lockdev: Make baselib configurable
      avro-c: Update to 1.9.1
      nftables: Package python scripts into nonarch libdir
      mercurial: Add python scripts into separate python package
      fluentbit: Fix packaging in multilib env
      dcadec: Define BASELIB as a knob
      dbus-broker: Use nonarch_libdir for systemd catalog files
      websocketapp: Fix multilib build
      ade: Fix install paths in multilib builds
      thrift: Upgrade to 0.13
      gattlib: Update to latest tip
      rygel: Use nonarch_libdir for systemd units
      firewalld: Package firewalld files
      iwd: Package module conf files via nonarch_libdir
      civetweb: Upgrade to latest tip
      ruli: Define OOP_LIB_DIR and INSTALL_LIB_DIR
      liblightmodbus: Fix packaging errors when using multilib
      ostree: Fix packaging errors when using lib64 libdir
      boinc-client: Use nonarch_libdir for systemd_units
      spirv-tools: Fix multilib builds
      pam-plugin-ldapdb: Include <stdexcept> for std::invalid_argument
      dvb-apps: Replace stime with clock_settime
      redis: Upgrade to 5.0.7
      cannelloni: Include stdexcept for runtime_error
      libubox: Update to latest
      upm: Fix 'may be used uninitialized' errors
      memcached: upgrade to 1.5.20
      ltrace: Fix build with gcc10
      mpd: Fix build with gcc10
      wvstreams: Fix build with gcc10
      tvheadend: Fix format-truncation warnings
      open-vm-tools: Ignore -Warray-bounds
      jsoncpp: Upgrade to 1.9.2
      ippool: Fix strncpy -Wformat-truncation warning
      opensc: Fix misaligned indentation
      glm: Upgrade to 0.9.9.6
      rocksdb: Upgrade to 6.5.2
      mariadb: Upgrade to 10.4.11
      ruli: Fix implicit conversion from 'unsigned int' to 'float'
      glfw: Update to latest
      fluentbit: Upgrade to 1.3.5
      renderdoc: Upgrade to 1.5
      spirv-tools: Upgrade to v2019.5
      upm: Disable -Wno-misleading-indentation with clang10+
      libyui: Disable Warnings as errors
      sanlock: Upgrade to 3.8.0+
      udisks2: Updare to latest master beyond 2.8.4
      netcat: Fix build with gettext 0.20.x
      gtkperf: Fix build with latest gettext 0.20.x
      hddtemp: Fix build with latest gettext 0.20.x
      vorbis-tools: Use external gettext
      rwmem: Upgrade to latest
      wireshark: Enable plugins when enabling qt5
      python3-jsonrpcserver: Use PYTHON_BASEVERSION instead of hardcoding py version
      smbnetfs: Update to latest 0.6.2 rev
      makedumpfile: Drop linking with libebl
      cmpi-bindings: append PYTHON_ABI suffix to libpython soname
      websocketpp: Fix clang specific flags in cmake files
      rocksdb: Disable Werror
      spirv-tools: Disable Werror
      libspatialite: Workaround proj_api.h deprecation in proj 6.0.0
      zbar: Switch to github and update to latest
      gstd: Upgrade to 0.8.1
      gst-shark: Upgrade to 0.6.1

Laurent Bonnans (1):
      opensc: fix RDEPENDS in pcsc PACKAGECONFIG

Leon Anavi (1):
      mosquitto: update to 1.6.8

Martin Jansa (2):
      googletest: fix build with newer oe-core without python in HOSTTOOLS
      proj: upgrade to 6.2.0

Max Krummenacher (1):
      libsoc: use python3 for python bindings

Maxime Roussin-Bélanger (1):
      libvncserver: add missing cmake configration option to packageconfig

Mingde (Matthew) Zeng (1):
      poppler/poppler-data: Add HOMEPAGE tags

Nicola Lunghi (1):
      python3-jsonrpcserver: update to 4.1.2

Pau Espin Pedrol (1):
      lksctp-tools: Add RRECOMENDS kernel-module-sctp for pkg lksctp-tools

Peter Kolbus (9):
      python(3)-ujson: extend to native(sdk)
      python-ipaddress: remove unneeded pip dependency
      python3-html2text: add recipe
      python(3)-beautifulsoup4: fix RDEPENDS
      python3-soupsieve: add recipe
      python-soupsieve: add recipe
      python(3)-beautifulsoup4: add soupsieve to RDEPENDS
      python3-booleanpy: add recipe
      python3-license-expression: add recipe

Pierre-Jean Texier (3):
      libssh2: add nativesdk support
      python3-xmltodict: add recipe
      libmxml: upgrade 3.0 -> 3.1

Quanyang Wang (1):
      glog: fix do_fetch error

Randy MacLeod (3):
      imagemagick: update from 7.8.47 to 7.9.16
      tigervnc: update from 1.9.0 to 1.10.1
      rsyslog: update from 8.1910 to 8.1911

Robert Yang (1):
      rocksdb: Fix compile error for DEBUG_BUILD

Ross Burton (11):
      python-jsonpointer: enable native/nativesdk
      python3-pystemd: upgrade to 0.7.0
      python-slip-dbus: don't use relative paths
      python-m2crypto: don't use relative paths
      python-coloredlogs: don't use relative paths
      python-lxml: remove redundant sed (fixed in 4.3.0 onwards)
      python-lxml: remove redundant RDEPENDS_class-native
      opencv: don't download during configure
      opencv: also download face alignment data in do_fetch()
      opencv: PACKAGECONFIG for G-API, use system ADE
      opencv: abort configure if we need to download

Stefan Agner (1):
      Revert "zstd: move recipe to oe-core"

Stefan Lendl (2):
      tinyproxy: Install a default tinyproxy.conf
      tinyproxy: Fix user and group in tinyproxy install

Sumit Garg (1):
      mariadb: fix library LZ4 lookup

Todd Cunningham (2):
      libnftnl: upgrade 1.1.4 -> 1.1.5
      nftables: upgrade 0.9.2 -> 0.9.3

Trevor Gamblin (4):
      python-twisted: add python3-pyserial to RDEPENDS
      python-twisted: add missing RDEPENDS for conch
      samba: disable guest access and anonymous queries
      python3-twisted: fix broken MemoryReactor import

Wang Mingyu (66):
      python-cmd2: upgrade 0.9.19 -> 0.9.21
      python-pluggy: upgrade 0.13.0 -> 0.13.1
      python-pyasn1: upgrade 0.4.7 -> 0.4.8
      python-pyopenssl: upgrade 19.0.0 -> 19.1.0
      python-simplejson: upgrade 3.16.0 -> 3.17.0
      python-thrift: upgrade 0.11.0 -> 0.13.0
      python-alembic: upgrade 1.3.0 -> 1.3.1
      python-dbus: upgrade 1.2.12 -> 1.2.14
      python-pbr: upgrade 5.4.3 -> 5.4.4
      python-paste: 3.2.2 -> 3.2.3
      python-lxml: 4.4.1 -> 4.4.2
      postgresql: 12.0 -> 12.1
      python-jsonschema: 3.1.1 -> 3.2.0
      python-pytest: upgrade 5.2.2 -> 5.3.1
      xterm: upgrade 350 -> 351
      wireshark: upgrade 3.0.6 -> 3.0.7
      python3-xxhash: upgrade 1.4.2 -> 1.4.3
      fuse3: upgrade 3.8.0 -> 3.9.0
      kea: upgrade 1.7.0 -> 1.7.2
      krb5: upgrade 1.17 -> 1.17.1
      hwdata: upgrade 0.329 -> 0.330
      python-pytest: upgrade 5.2.1 -> 5.3.2
      python-waitress: upgrade 1.3.1 -> 1.4.1
      python-cachetools: upgrade 3.1.1 -> 4.0.0
      python-sqlalchemy: upgrade 1.1.17 -> 1.3.12
      strongswan: upgrade 5.8.1 -> 5.8.2
      smartmontools: upgrade 7.0 -> 7.1
      spitools: upgrade 0.8.3 -> 0.8.4
      python-pyyaml: upgrade 5.1.2 -> 5.2
      arno-iptables-firewall: upgrade 2.0.3 -> 2.1.0
      ipvsadm: upgrade 1.30 -> 1.31
      lftp: upgrade 4.8.4 -> 4.9.0
      nghttp2: upgrade 1.39.2 -> 1.40.0
      opensaf: upgrade 5.19.07 -> 5.19.10
      wolfssl: upgrade 4.2.0 -> 4.3.0
      kea: upgrade 1.7.2 -> 1.7.3
      wireshark: upgrade 3.0.7 -> 3.2.0
      botan: upgrade 2.11.0 -> 2.13.0
      cppzmq: upgrade 4.4.1 -> 4.5.0
      iozone3: upgrade 487 -> 488
      libmbim: upgrade 1.20.2 -> 1.20.4
      libnfc: upgrade to 1.7.1
      libsigc++-2.0: upgrade 3.0.0 -> 3.0.2
      libuv: upgrade 1.33.1 -> 1.34.0
      phoronix-test-suite: upgrade 9.0.1 -> 9.2.1
      rabbitmq-c: upgrade 0.9.0 -> 0.10.0
      cscope: upgrade 15.8b -> 15.9
      msgpack-c: upgrade 3.1.1 -> 3.2.1
      gnuplot: upgrade 5.2.2 -> 5.2.8
      gphoto2: upgrade 2.5.14 -> 2.5.23
      gtkwave: upgrade 3.3.102 -> 3.3.103
      haveged: upgrade 1.9.6 -> 1.9.8
      libgphoto2: upgrade 2.5.17 -> 2.5.23
      libplist: upgrade 2.0.0 -> 2.1.0
      ipmiutil: upgrade 3.0.5 -> 3.1.5
      libburn: upgrade 1.5.0 -> 1.5.2
      libdvdread: upgrade 6.0.1 -> 6.0.2
      libsdl2-image: upgrade 2.0.3 -> 2.0.5
      libsdl2-mixer: upgrade 2.0.2 -> 2.0.4
      libsdl2-ttf: upgrade 2.0.14 -> 2.0.15
      yad: upgrade 4.1 -> 5.0
      python3-astor: 0.8 -> 0.8.1
      python3-bandit: 1.5.1 -> 1.6.2
      python-asn1crypto: 1.2.0 -> 1.3.0
      python-bitarray: 1.2.0 -> 1.2.1
      python-pyconnman: 0.1.0 -> 0.2.0

William A. Kennington III via Openembedded-devel (1):
      stunnel: bump to version 5.56

Yi Zhao (4):
      phpmyadmin: upgrade 4.9.1 -> 4.9.2
      tk: upgrade 8.6.9 -> 8.6.10
      ntp: restrict NTP mode 6 queries
      samba: upgrade 4.10.10 -> 4.10.11

Yongxin Liu (1):
      ndctl: Upgrade to v67

Zang Ruochen (17):
      python-alembic: upgrade 1.3.1 -> 1.3.2
      python-beautifulsoup4: upgrade 4.8.1 -> 4.8.2
      python-bitarray: upgrade 1.1.0 -> 1.2.0
      python-certifi: upgrade 2019.9.11 -> 2019.11.28
      python-cmd2: upgrade 0.9.21 -> 0.9.22
      python-engineio: upgrade 3.10.0 -> 3.11.1
      python-parse: upgrade 1.12.1 -> 1.14.0
      python-passlib: upgrade 1.7.1 -> 1.7.2
      python-pexpect: upgrade 4.6.0 -> 4.7.0
      python-psutil: upgrade 5.6.5 -> 5.6.7
      python-py: upgrade 1.8.0 -> 1.8.1
      python-pycryptodome: upgrade 3.9.3 -> 3.9.4
      python-pymisp: upgrade 2.4.117.2 -> 2.4.119.1
      python-pymongo: upgrade 3.9.0 -> 3.10.0
      python-pyparsing: upgrade 2.4.5 -> 2.4.6
      python-pyperf: upgrade 1.6.1 -> 1.7.0
      python-backports-functools-lru-cache: Add python3 version

Zhixiong Chi (1):
      dnsmasq: CVE-2019-14834

hmenn (1):
      add sqlite-orm v1.5

madhavank27 (1):
      Added bb file for libcamera integration

sangelovic (1):
      sdbus-c++: Introduce recipes for sdbus-c++ library and its tools

Change-Id: I5e7559de35d61167e234161ffb768f6f95d30f41
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
index 5527566..f22b389 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
@@ -1,9 +1,7 @@
-Index: git/configure.in
-===================================================================
---- git.orig/configure.ac	2014-06-18 16:06:16.040721349 +0000
-+++ git/configure.ac	2014-07-18 07:49:17.085552256 +0000
+--- a/configure.ac
++++ b/configure.ac
 @@ -1,5 +1,5 @@
- AC_INIT([SMBNetFS],[0.6.1])
+ AC_INIT([SMBNetFS],[0.6.2])
 -AM_INIT_AUTOMAKE
 +AM_INIT_AUTOMAKE([foreign])
  AC_CONFIG_HEADERS([src/config.h])
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
index ddb2cc8..d94603b 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
@@ -11,15 +11,14 @@
 DEPENDS = "fuse samba"
 DEPENDS_append_libc-musl = " libexecinfo"
 
+inherit autotools pkgconfig features_check
+
 # samba depends on libpam
-inherit features_check
 REQUIRED_DISTRO_FEATURES = "pam"
 
-inherit autotools gitpkgv pkgconfig
+PV = "0.6.1+git${SRCPV}"
 
-PKGV = "${GITPKGVTAG}"
-
-SRCREV = "bc6b94b015fdaf7c4dab56ccb996eecea8bc4373"
+SRCREV = "a117eec8de7ed7249871da73dcc350283ce72069"
 
 SRC_URI = "git://smbnetfs.git.sourceforge.net/gitroot/smbnetfs/smbnetfs;branch=master \
            file://configure.patch \
diff --git a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.8.0.bb b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.0.bb
similarity index 91%
rename from meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.8.0.bb
rename to meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.0.bb
index b5bbe04..19a3499 100644
--- a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.8.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.0.bb
@@ -13,8 +13,8 @@
 
 SRC_URI = "https://github.com/libfuse/libfuse/releases/download/fuse-${PV}/fuse-${PV}.tar.xz \
 "
-SRC_URI[md5sum] = "f184004cd3724f579cd602fa5232681b"
-SRC_URI[sha256sum] = "4a464f6df782a1dca1f7e85bf64ff6ece9547b389557aae4160371cb1c898d61"
+SRC_URI[md5sum] = "5dc2be21c0d06c7eace340996e8a37e2"
+SRC_URI[sha256sum] = "fcb7079a1bb4e510377b427d1c5c37c349281d498e249ae0c2379b4cf50059c2"
 
 S = "${WORKDIR}/fuse-${PV}"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/ufs-tool/ufs-tool_git.bb b/meta-openembedded/meta-filesystems/recipes-utils/ufs-tool/ufs-tool_git.bb
deleted file mode 100644
index 208ac3c..0000000
--- a/meta-openembedded/meta-filesystems/recipes-utils/ufs-tool/ufs-tool_git.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Tool to access UFS (Universal Flash Storage) devices"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-PV = "1.3+git${SRCPV}"
-
-BRANCH ?= "dev"
-
-SRCREV = "8b00e33003b57d7071943f63863fcf8cc48d5be9"
-
-SRC_URI = "git://github.com/westerndigitalcorporation/ufs-tool.git;protocol=git;branch=${BRANCH}"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} CC="${CC}" CFLAGS="${CFLAGS}""
-
-do_configure() {
-	sed -i -e "s|-static$||g" ${S}/Makefile
-}
-do_install() {
-	install -d ${D}${bindir}/
-	install -c -m 755 ${S}/ufs-tool ${D}${bindir}/
-}
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils/0001-Replace-u_intXX_t-with-kernel-typedefs.patch b/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils/0001-Replace-u_intXX_t-with-kernel-typedefs.patch
new file mode 100644
index 0000000..e69a3cf
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils/0001-Replace-u_intXX_t-with-kernel-typedefs.patch
@@ -0,0 +1,54 @@
+From 6cf6f5b9c39dfd0d46f2069c3baeab92ae980367 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Dec 2019 00:58:13 -0800
+Subject: [PATCH] Replace u_intXX_t with kernel typedefs
+
+u_intXX_t requires including sys/types.h which might not work in kernel
+code, if this header is used in a kernel module
+
+Fixes
+| In file included from ufs.c:16:
+| In file included from ./ufs.h:9:
+| ./scsi_bsg_util.h:131:2: error: unknown type name 'u_int16_t'; did you mean 'uint16_t'?
+|         u_int16_t result;
+|         ^~~~~~~~~
+
+Upstream-Status: Submitted [https://github.com/westerndigitalcorporation/ufs-utils/pull/23]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ scsi_bsg_util.h | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/scsi_bsg_util.h b/scsi_bsg_util.h
+index 3f8a482..497c3ae 100644
+--- a/scsi_bsg_util.h
++++ b/scsi_bsg_util.h
+@@ -121,15 +121,15 @@ struct ufs_bsg_reply {
+ #endif /* SCSI_BSG_UFS_H.*/
+ 
+ struct rpmb_frame {
+-	u_int8_t  stuff[196];
+-	u_int8_t  key_mac[32];
+-	u_int8_t  data[256];
+-	u_int8_t  nonce[16];
+-	u_int32_t write_counter;
+-	u_int16_t addr;
+-	u_int16_t block_count;
+-	u_int16_t result;
+-	u_int16_t req_resp;
++	__u8  stuff[196];
++	__u8  key_mac[32];
++	__u8  data[256];
++	__u8  nonce[16];
++	__u32 write_counter;
++	__u16 addr;
++	__u16 block_count;
++	__u16 result;
++	__u16 req_resp;
+ };
+ 
+ #define BSG_REPLY_SZ (sizeof(struct ufs_bsg_reply))
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_git.bb b/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_git.bb
new file mode 100644
index 0000000..5fdd089
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_git.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Tool to access UFS (Universal Flash Storage) devices"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+PV = "1.6+git${SRCPV}"
+
+BRANCH ?= "dev"
+
+SRCREV = "a3cf93b66f4606a46354cf884d24aa966661f848"
+
+SRC_URI = "git://github.com/westerndigitalcorporation/ufs-utils.git;protocol=git;branch=${BRANCH} \
+           file://0001-Replace-u_intXX_t-with-kernel-typedefs.patch \
+"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} CC="${CC}" CFLAGS="${CFLAGS}""
+
+CFLAGS_append_mipsarchn64 = " -D__SANE_USERSPACE_TYPES__ -D_GNU_SOURCE"
+
+do_configure() {
+	sed -i -e "s|-static$||g" ${S}/Makefile
+}
+
+do_install() {
+	install -D -m 755 ${S}/ufs-utils ${D}${bindir}/ufs-utils
+}
+
+PROVIDES += "ufs-tool"
+
+RPROVIDES_${PN} += "ufs-tool"
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0001-build-Check-for-sync_file_range-libc-function.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0001-build-Check-for-sync_file_range-libc-function.patch
deleted file mode 100644
index b5071ae..0000000
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0001-build-Check-for-sync_file_range-libc-function.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 1a4c9ebbb8731f2e3631d77b7eeaf3c373141d88 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 31 Jan 2018 21:28:53 -0800
-Subject: [PATCH] build: Check for sync_file_range libc function
-
-glibc 2.27 now has sync_file_range()
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- include/builddefs.in | 1 +
- io/Makefile          | 5 ++++-
- io/io.h              | 2 +-
- io/sync_file_range.c | 3 +++
- 4 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/include/builddefs.in b/include/builddefs.in
-index d38dc7e..706eca6 100644
---- a/include/builddefs.in
-+++ b/include/builddefs.in
-@@ -94,6 +94,7 @@ HAVE_FIEMAP = @have_fiemap@
- HAVE_PREADV = @have_preadv@
- HAVE_PWRITEV2 = @have_pwritev2@
- HAVE_COPY_FILE_RANGE = @have_copy_file_range@
-+HAVE_NR_COPY_FILE_RANGE = @have_nr_copy_file_range@
- HAVE_SYNC_FILE_RANGE = @have_sync_file_range@
- HAVE_SYNCFS = @have_syncfs@
- HAVE_READDIR = @have_readdir@
-diff --git a/io/Makefile b/io/Makefile
-index 484e2b5..2751dcb 100644
---- a/io/Makefile
-+++ b/io/Makefile
-@@ -53,10 +53,13 @@ else
- LSRCFILES += fiemap.c
- endif
- 
--ifeq ($(HAVE_COPY_FILE_RANGE),yes)
-+ifeq ($(HAVE_NR_COPY_FILE_RANGE),yes)
- CFILES += copy_file_range.c
-+LCFLAGS += -DHAVE_NR_COPY_FILE_RANGE
-+ifeq ($(HAVE_COPY_FILE_RANGE),yes)
- LCFLAGS += -DHAVE_COPY_FILE_RANGE
- endif
-+endif
- 
- ifeq ($(HAVE_SYNC_FILE_RANGE),yes)
- CFILES += sync_file_range.c
-diff --git a/io/io.h b/io/io.h
-index 6469179..678b3d7 100644
---- a/io/io.h
-+++ b/io/io.h
-@@ -146,7 +146,7 @@ extern void		fiemap_init(void);
- #define fiemap_init()	do { } while (0)
- #endif
- 
--#ifdef HAVE_COPY_FILE_RANGE
-+#if defined(HAVE_NR_COPY_FILE_RANGE) && !defined(HAVE_COPY_FILE_RANGE)
- extern void		copy_range_init(void);
- #else
- #define copy_range_init()	do { } while (0)
-diff --git a/io/sync_file_range.c b/io/sync_file_range.c
-index 30bbc93..6c49d73 100644
---- a/io/sync_file_range.c
-+++ b/io/sync_file_range.c
-@@ -4,6 +4,7 @@
-  * All Rights Reserved.
-  */
- 
-+#ifndef HAVE_COPY_FILE_RANGE
- #include "command.h"
- #include "input.h"
- #include "init.h"
-@@ -92,3 +93,5 @@ sync_range_init(void)
- 
- 	add_command(&sync_range_cmd);
- }
-+
-+#endif
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb
index 5ab1d02..34b3386 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb
@@ -8,7 +8,6 @@
 DEPENDS = "util-linux util-linux-native"
 SRC_URI = "https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/${BP}.tar.xz \
            file://remove_flags_from_build_flags.patch \
-           file://0001-build-Check-for-sync_file_range-libc-function.patch \
            file://0001-Check-for-MAP_SYNC-in-sys-mman.h.patch \
            file://0002-include-include-xfs-linux.h-after-sys-mman.h.patch \
            file://0001-support-usrmerge.patch \
diff --git a/meta-openembedded/meta-gnome/recipes-apps/pinpoint/pinpoint_git.bb b/meta-openembedded/meta-gnome/recipes-apps/pinpoint/pinpoint_git.bb
deleted file mode 100644
index 6b2688f..0000000
--- a/meta-openembedded/meta-gnome/recipes-apps/pinpoint/pinpoint_git.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "A simple presentation tool for hackers"
-DESCRIPTION = "Pinpoint is a simple presentation tool that hopes to avoid audience death \
-               by bullet point and instead encourage presentations containing beautiful \
-               images and small amounts of concise text in slides."
-SECTION = "x11/multimedia"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
-                    file://pinpoint.c;beginline=6;endline=17;md5=201d438283607da393fae6aca085454c"
-
-DEPENDS = "glib-2.0 gdk-pixbuf cogl-1.0 clutter-1.0 clutter-gst-3.0 librsvg"
-
-inherit autotools gettext pkgconfig features_check
-
-# cogl requires opengl
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI = "git://git.gnome.org/pinpoint"
-
-SRCREV = "80a056c57e819d0b75035424638813b0670830e1"
-PV = "0.1.4+gitr${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-RRECOMMENDS_${PN} = "gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-png"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.34.2.bb
similarity index 90%
rename from meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.34.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.34.2.bb
index e30162c..8f669c9 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.34.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.34.2.bb
@@ -18,8 +18,8 @@
 
 inherit gnomebase itstool gnome-help pkgconfig gsettings gobject-introspection upstream-version-is-even gettext features_check
 
-SRC_URI[archive.md5sum] = "77b38b625008f5940e9bd4b3d38e8cf8"
-SRC_URI[archive.sha256sum] = "85e407cde396147b249120d816c7715fb6df191ca561cf65ff3554a5d67626df"
+SRC_URI[archive.md5sum] = "9e9e82fa8f6045ad7817157d9335d185"
+SRC_URI[archive.sha256sum] = "3cc0955f11204e3a2db1c7ab99b866692749592257485b87304134ad69da0617"
 SRC_URI += " \
     file://0001-Add-format-attribute-to-_synctex_malloc.patch \
     file://0002-add-a-formatting-attribute-check.patch \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc
index 0893f8e..1eae3df 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc
@@ -9,7 +9,7 @@
 
 inherit gnomebase upstream-version-is-even
 
-SRC_URI[archive.md5sum] = "d1701875bbac80d6d62e9acfc6c43bea"
-SRC_URI[archive.sha256sum] = "6ff56ba04cb639e627fe9d6e0ada106a10cadd68a0d53b8ec72b4e285df53abe"
-PV = "3.34.1"
+SRC_URI[archive.md5sum] = "687d6d7242d60a8a3a3322eee6a45dca"
+SRC_URI[archive.sha256sum] = "d2dfac5ca76e05e872fbb06a57cae0dace64818c4dce1e906b0396888270c3a9"
+PV = "3.34.3"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.32.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.32.3.bb
similarity index 75%
rename from meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.32.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.32.3.bb
index 7dcf3e9..3ab9668 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.32.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.32.3.bb
@@ -7,15 +7,14 @@
 DEPENDS = " \
     glib-2.0-native \
     gtk+3 \
-    nautilus \
     libarchive \
     libnotify \
 "
 
 inherit gnomebase gsettings itstool gnome-help gettext upstream-version-is-even
 
-SRC_URI[archive.md5sum] = "e79715bb2400df83c0f67cc0cce2b655"
-SRC_URI[archive.sha256sum] = "c60a79e0baf74cb1c09a1c8f5ffe0d6e311227ca14ecc5b1156beb3715341a71"
+SRC_URI[archive.md5sum] = "5e098bb254d34f48a9b5761b468f4240"
+SRC_URI[archive.sha256sum] = "be111fb877dc1eb487ec5d6e2b72ba5defe1ab8033a6a6b9b9044a2a7787e22a"
 
 PACKAGECONFIG[nautilus] = "-Dnautilus-actions=true,-Dnautilus-actions=false,nautilus"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0001-Ensure-pam-file-installation.patch b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0001-Ensure-pam-file-installation.patch
new file mode 100644
index 0000000..6362d5e
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0001-Ensure-pam-file-installation.patch
@@ -0,0 +1,48 @@
+From f7bba53adf8a26f900442a05bb98326747c392b4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Tue, 3 Dec 2019 00:24:27 +0100
+Subject: [PATCH] Ensure pam-file installation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+All the detection magic does not work for us
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ data/Makefile.am | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+diff --git a/data/Makefile.am b/data/Makefile.am
+index bda9160..dbc3ea3 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -296,22 +296,12 @@ endif
+ 		chown root:root $(DESTDIR)$(logdir) || : ; \
+ 	fi
+ 
+-	system=`uname`; \
+-	if test -f /usr/include/security/pam_appl.h; then \
+-	  if test '!' -d $(DESTDIR)$(PAM_PREFIX)/pam.d; then \
+ 		$(mkinstalldirs) $(DESTDIR)$(PAM_PREFIX)/pam.d; \
+ 		chmod 755 $(DESTDIR)$(PAM_PREFIX)/pam.d; \
+-	   fi; \
+-	   if test $$system = Linux; then \
+ 	     for pamfile in $(pam_files); do \
+ 	       bn=$$(basename $$pamfile .pam); \
+ 	       $(INSTALL_DATA) $(srcdir)/$$pamfile $(DESTDIR)$(PAM_PREFIX)/pam.d/$$bn; \
+-	     done; \
+-	   fi; \
+-	   if test $$system = SunOS; then \
+-		echo "Please add PAM authentication for gdm, gdm-autologin and gdm-welcome in $(PAM_PREFIX)/pam.conf!"; \
+-	   fi; \
+-	fi
++	     done;
+ 
+ 	if test '!' -d $(DESTDIR)$(xauthdir); then \
+ 		$(mkinstalldirs) $(DESTDIR)$(xauthdir); \
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_3.34.1.bb
new file mode 100644
index 0000000..a47bf6f
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_3.34.1.bb
@@ -0,0 +1,56 @@
+SUMMARY = "GNOME Display Manager"
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    dconf-native \
+    gtk+3 \
+    accountsservice \
+    libcanberra \
+    libpam \
+"
+
+REQUIRED_DISTRO_FEATURES = "x11 systemd pam"
+
+inherit gnomebase gsettings gobject-introspection gettext systemd useradd upstream-version-is-even features_check
+
+SRC_URI[archive.md5sum] = "65d1fd4bb85e8b133d1cbffb80ecf62e"
+SRC_URI[archive.sha256sum] = "e85df657aa8d9361af4fb122014d8f123a93bfe45a7662fba2b373d839dbd8d3"
+SRC_URI += "file://0001-Ensure-pam-file-installation.patch"
+
+EXTRA_OECONF = " \
+    --without-plymouth \
+    --with-default-pam-config=openembedded \
+    --with-pam-mod-dir=${base_libdir}/security \
+"
+
+do_install_append() {
+    rm -rf ${D}/run ${D}${localstatedir}/run
+}
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --no-create-home --home ${localstatedir}/lib/gdm --user-group gdm"
+
+SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+
+# Some gnome components - as gnome-panel and gnome-shell (!!) - require gdm
+# components. To allow gnome-images using different display-manager, split them
+# out into a seperate package.
+PACKAGE_BEFORE_PN = "${PN}-base"
+FILES_${PN}-base = " \
+    ${datadir}/glib-2.0 \
+    ${datadir}/gnome-session \
+    ${libdir}/lib*${SOLIBS} \
+    ${libdir}/girepository-1.0 \
+"
+
+CONFFILES_${PN} += "${sysconfdir}/gdm/custom.conf"
+FILES_${PN} += " \
+    ${datadir}/dconf \
+    ${base_libdir}/security/pam_gdm.so \
+    ${localstatedir} \
+    ${systemd_unitdir} \
+"
+
+RDEPENDS_${PN} += "${PN}-base"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.34.1.bb
similarity index 84%
rename from meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.34.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.34.1.bb
index e9cdd8a..20806bd 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.34.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.34.1.bb
@@ -23,8 +23,8 @@
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI[archive.md5sum] = "ec6632fa73d9ea6c817e74a98d16eab6"
-SRC_URI[archive.sha256sum] = "3e95e51d3ccb495a9ac95aa3ed7fe8fe37ccde7c678f37fa3cea684bc71d507e"
+SRC_URI[archive.md5sum] = "4bca1d0a13db186cd84619b4bff42238"
+SRC_URI[archive.sha256sum] = "ebf9ef4e19831699d26bb93ce029edfed65416d7c11147835fc370d73428d5c6"
 
 GTKDOC_MESON_OPTION = "documentation"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Disable-tests-on-host.patch b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Disable-tests-on-host.patch
new file mode 100644
index 0000000..0953214
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Disable-tests-on-host.patch
@@ -0,0 +1,33 @@
+From 95379de2132786f855e8caec1fd5869225774d02 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sat, 18 May 2019 01:14:07 +0200
+Subject: [PATCH] Disable tests on host
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ configure.ac | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index fa4e136..056e96e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -335,9 +335,7 @@ AS_IF([test "x$with_dbus_tests" != "xno"], [
+ ])
+ AM_CONDITIONAL([DBUS_TESTS], [test "x$with_dbus_tests" != "xno"])
+ 
+-AC_MSG_CHECKING([for a suitable UTF-8 locale to run the tests in])
+-TESTS_LOCALE=$($srcdir/build/choose-tests-locale.sh)
+-AC_MSG_RESULT([$TESTS_LOCALE])
++TESTS_LOCALE=C
+ AC_SUBST([TESTS_LOCALE])
+ 
+ AC_SUBST([gjsjsdir], [\${datadir}/gjs-1.0])
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.4.bb
new file mode 100644
index 0000000..eb7d323
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.4.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Javascript bindings for GNOME"
+LICENSE = "MIT & LGPLv2+"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=beb29cf17fabe736f0639b09ee6e76fa \
+    file://COPYING.LGPL;md5=3bf50002aefd002f49e7bb854063f7e7 \
+"
+
+GNOMEBASEBUILDCLASS = "autotools"
+
+DEPENDS = "mozjs gtk+3"
+
+inherit gnomebase gsettings gobject-introspection vala gettext features_check upstream-version-is-even
+
+SRC_URI[archive.md5sum] = "385f4baa266991a08d3e425bc69ee962"
+SRC_URI[archive.sha256sum] = "261a3f666c771d7744965fe71b804fc2c3a3d46a8e3e8d4f7ed5ef97967ebd5f"
+SRC_URI += "file://0001-Disable-tests-on-host.patch"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " --enable-introspection --disable-introspection"
+
+EXTRA_OECONF = " \
+    --without-dbus-tests \
+    --disable-installed-tests \
+"
+
+do_configure_prepend() {
+    # make configure find gobject-introspection test code. Although we set
+    # --disable-installed-tests gjs builds them
+    sed -i 's|:$GI_DATADIR|:${STAGING_DIR_NATIVE}$GI_DATADIR|g' ${S}/configure.ac
+}
+
+FILES_${PN} += "${datadir}/gjs-1.0/lsan"
+
+PACKAGES =+ "${PN}-valgrind"
+FILES_${PN}-valgrind = "${datadir}/gjs-1.0/valgrind"
+RSEPENDS_${PN}-valgrind += "valgrind"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.2.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.2.4.bb
similarity index 62%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.2.3.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.2.4.bb
index 16a9213..afeda3e 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.2.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.2.4.bb
@@ -3,15 +3,14 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = " \
-    gnome-common-native \
     gtk+3 \
     libarchive \
 "
 
 inherit gnomebase gobject-introspection gtk-doc vala
 
-SRC_URI[archive.md5sum] = "39b13fb2fc7752fa3b80616244dc4ef8"
-SRC_URI[archive.sha256sum] = "5de9db0db028cd6cab7c2fec46ba90965474ecf9cd68cfd681a6488cf1fb240a"
+SRC_URI[archive.md5sum] = "36ab263f477eeee3c95c9381766eb3c2"
+SRC_URI[archive.sha256sum] = "0a34c377f8841abbf4c29bc848b301fbd8e4e20c03d7318c777c58432033657a"
 
 do_compile_prepend() {
     export GIR_EXTRA_LIBS_PATH="${B}/gnome-autoar/.libs"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_3.34.0.bb
new file mode 100644
index 0000000..2350a7d
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_3.34.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "GNOME wallpapers"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
+
+SECTION = "x11/gnome"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase allarch gettext upstream-version-is-even allarch
+
+SRC_URI[archive.md5sum] = "f350804df16cdc9ef5306087157cf31b"
+SRC_URI[archive.sha256sum] = "c2b7fb6db98c05e205053daaa7f58c7f06ff91b45c4006052af17c578ae7b47f"
+
+FILES_${PN} += " \
+    ${datadir}/backgrounds \
+    ${datadir}/gnome-background-properties \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_3.34.1.bb
new file mode 100644
index 0000000..b09e34d
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_3.34.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "GNOME calculator"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    yelp-tools-native \
+    gtk+3 \
+    libsoup-2.4 \
+    libgee \
+    libmpc \
+    gtksourceview4 \
+"
+
+GIR_MESON_OPTION = 'disable-introspection'
+GIR_MESON_ENABLE_FLAG = 'false'
+GIR_MESON_DISABLE_FLAG = 'true'
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gobject-introspection gnome-help vala gtk-icon-cache gettext features_check upstream-version-is-even
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.md5sum] = "9157b93a3f41fdad80df26c062b95c7b"
+SRC_URI[archive.sha256sum] = "4d5348c2fbf01d040a2cb5e84de812c503911e1ea498a83e7eefff52c4417051"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+    ${datadir}/gnome-shell \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch
new file mode 100644
index 0000000..7f82a15
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch
@@ -0,0 +1,45 @@
+From ba8aebe1259ae3f7f5a4827e5a47bb95c568b218 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Tue, 21 May 2019 16:07:46 +0200
+Subject: [PATCH] Add meson option to pass sysroot
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+We need to pass this to meson to help it finding gdesktop-enums.h:
+
+| panels/background/meson.build:38:0: ERROR: File /usr/include/gsettings-desktop-schemas/gdesktop-enums.h does not exist.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ meson_options.txt             | 1 +
+ panels/background/meson.build | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/meson_options.txt b/meson_options.txt
+index a347168..2cd8121 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,3 +1,4 @@
++option('oe_sysroot', type: 'string', value: '', description: 'Directory for OE-sysroot')
+ option('cheese', type: 'boolean', value: true, description: 'build with cheese webcam support')
+ option('documentation', type: 'boolean', value: false, description: 'build documentation')
+ option('gnome_session_libexecdir', type: 'string', value: '', description: 'Directory for gnome-session\'s libexecdir')
+diff --git a/panels/background/meson.build b/panels/background/meson.build
+index bb34b69..f22722e 100644
+--- a/panels/background/meson.build
++++ b/panels/background/meson.build
+@@ -36,7 +36,7 @@ common_sources = []
+ 
+ enums = 'gdesktop-enums-types'
+ enums_header = files(
+-  gsettings_desktop_dep.get_pkgconfig_variable('prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h',
++  get_option('oe_sysroot') + gsettings_desktop_dep.get_pkgconfig_variable('prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h',
+   'cc-background-item.h'
+ )
+ 
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_3.34.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_3.34.2.bb
new file mode 100644
index 0000000..9e6e92a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_3.34.2.bb
@@ -0,0 +1,55 @@
+SUMMARY = "GNOME Settings"
+DESCRIPTION = "GNOME Settings is GNOME's main interface for configuration of various aspects of your desktop"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gettext vala upstream-version-is-even bash-completion features_check
+
+DEPENDS = " \
+    gdk-pixbuf-native \
+    colord-gtk \
+    udisks2 \
+    upower \
+    polkit \
+    pulseaudio \
+    accountsservice \
+    samba \
+    gsettings-desktop-schemas \
+    gnome-settings-daemon \
+    gnome-desktop3 \
+    gnome-online-accounts \
+    network-manager-applet \
+    gnome-bluetooth \
+    grilo \
+    libgtop \
+    gsound \
+    libpwquality \
+"
+
+REQUIRED_DISTRO_FEATURES += "polkit pulseaudio systemd x11"
+
+SRC_URI[archive.md5sum] = "a960a7d3e9f1c4f341bae42da7fbf23a"
+SRC_URI[archive.sha256sum] = "a85ffaf5885a8c70c019013d73792bf4cc75f643e97f6e8b52f7fbba9f7a9114"
+SRC_URI += "file://0001-Add-meson-option-to-pass-sysroot.patch"
+
+PACKAGECONFIG ??= "ibus ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
+PACKAGECONFIG[ibus] = "-Dibus=true, -Dibus=false, ibus"
+PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false, wayland"
+
+# Once we have (lib)cheese we can make cheese a PACKAGECONFIG
+EXTRA_OEMESON = " \
+    -Doe_sysroot=${STAGING_DIR_HOST} \
+    -Dcheese=false \
+"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/gnome-shell \
+    ${datadir}/metainfo \
+"
+
+FILES_${PN}-dev += "${datadir}/gettext"
+
+RDEPENDS_${PN} += "gsettings-desktop-schemas"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch
index e93d5b6..4b3894f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch
@@ -18,14 +18,14 @@
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index 83407b4..80eab84 100644
+index 2e7160d..f83677d 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -53,12 +53,7 @@ udev_dep = dependency('libudev', required: get_option('udev'))
+@@ -58,12 +58,7 @@ udev_dep = dependency('libudev', required: get_option('udev'))
  host_os = host_machine.system()
  host_cpu = host_machine.cpu()
  supported_os = ['linux']
--unsupported_cpus = ['alpha', 'ia64', 'm68k', 'sh4', 'sparc', 'sparc64']
+-unsupported_cpus = ['alpha', 'ia64', 'm68k', 'riscv64', 'sh4', 'sparc', 'sparc64']
 -if supported_os.contains(host_os) and not unsupported_cpus.contains(host_cpu)
 -  seccomp_dep = dependency('libseccomp')
 -else
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.34.3.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.34.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.34.3.bb
index a2f7359..cdd11aa 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.34.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.34.3.bb
@@ -14,8 +14,8 @@
 REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
 UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
 
-SRC_URI[archive.md5sum] = "357b4e63960830c1399d3341d05746ea"
-SRC_URI[archive.sha256sum] = "c1dbeb5666dad27166c769e48e2ab41dd5ed74718ea35eb57c8488790662dc5a"
+SRC_URI[archive.md5sum] = "cdcd3006f55d8c8813315bef6f4f6b71"
+SRC_URI[archive.sha256sum] = "acc2efc847574fd21d8f200679f111c2b1eb5ae2c041e0034e7c18450a7d9c6d"
 
 SRC_URI += " \
     file://gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.34.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.34.2.bb
new file mode 100644
index 0000000..3da8629
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.34.2.bb
@@ -0,0 +1,34 @@
+SUMMARY = "GNOME Flashback (GNOME 2) session"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit gnomebase gsettings gtk-icon-cache gettext upstream-version-is-even features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
+
+DEPENDS += " \
+    upower \
+    ibus \
+    libxkbfile \
+    polkit \
+    metacity \
+    gnome-desktop3 \
+    gnome-bluetooth \
+"
+
+SRC_URI[archive.md5sum] = "251b51bad322c41d34d06fdb8f1799d4"
+SRC_URI[archive.sha256sum] = "3be65388cd2c8f39741bcc05da87ef40035183a9a39502d67696242c2aeb469c"
+
+do_install_append() {
+    # no oe-layer has compiz -> remove dead session
+    rm -f ${D}${datadir}/xsessions/gnome-flashback-compiz.desktop
+}
+
+FILES_${PN} += " \
+    ${datadir}/xsessions \
+    ${datadir}/desktop-directories \
+    ${datadir}/gnome-session \
+    ${systemd_user_unitdir} \
+"
+
+RDEPENDS_${PN} += "metacity gnome-panel"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb
index 5be8d50..d8f7e30 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb
@@ -1,4 +1,4 @@
-SUMMARY = "GNOME bluetooth manager"
+SUMMARY = "GNOME font viewer"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring/0001-Set-paths-to-ssh-agent-and-ssh-add-by-configure-opti.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring/0001-Set-paths-to-ssh-agent-and-ssh-add-by-configure-opti.patch
new file mode 100644
index 0000000..32eecf8
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring/0001-Set-paths-to-ssh-agent-and-ssh-add-by-configure-opti.patch
@@ -0,0 +1,42 @@
+From e6464e01bc1cdf5496be2942d1bac41aa609f47e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Thu, 23 May 2019 23:44:06 +0200
+Subject: [PATCH] Set paths to ssh-agent and ssh-add by configure options
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+We have no executables in our sysroot so configuration won't find them.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ configure.ac | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4b83664..eda0c96 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -351,8 +351,15 @@ if test "$enable_ssh_agent" = "no"; then
+ 	SSH_AGENT=false
+ 	SSH_ADD=false
+ else
+-	AC_PATH_PROG([SSH_AGENT], [ssh-agent], [no])
+-	AC_PATH_PROG([SSH_ADD], [ssh-add], [no])
++    AC_ARG_WITH([ssh-agent-path],
++                [AC_HELP_STRING([--with-ssh-agent-path=PATH],
++                                 [path to ssh-agent])],
++                 [SSH_AGENT=$with_ssh_agent_path], [SSH_AGENT=no])
++    AC_ARG_WITH([ssh-add-path],
++                [AC_HELP_STRING([--with-ssh-add-path=PATH],
++                                 [path to ssh-add])],
++                 [SSH_ADD=$with_ssh_add_path], [SSH_ADD=no])
++
+ 	if test "$SSH_AGENT" = "no" -o "$SSH_ADD" = "no"; then
+ 		AC_MSG_ERROR([the ssh-agent and ssh-add commands were not found])
+ 	else
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.28.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.28.2.bb
deleted file mode 100644
index a84c218..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.28.2.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Password and keyring managing daemon"
-HOMEPAGE = "http://www.gnome.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/gnome"
-
-LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-inherit features_check gnomebase remove-libtool gettext upstream-version-is-even
-
-DEPENDS = " \
-    intltool-native \
-    glib-2.0-native \
-    gtk+3 \
-    gcr \
-    libgcrypt \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} \
-"
-
-SRC_URI[archive.md5sum] = "284580f954f762caf62aed2ae7358177"
-SRC_URI[archive.sha256sum] = "81171b7d07211b216b4c9bb79bf2deb3deca18fe8d56d46dda1c4549b4a2646a"
-SRC_URI += "file://musl.patch"
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-RDEPENDS_${PN} = "libgnome-keyring glib-2.0-utils"
-
-EXTRA_OECONF = "--disable-doc \
-                ac_cv_path_SSH_AGENT=${bindir}/ssh-agent \
-                ac_cv_path_SSH_ADD=${bindir}/ssh-add"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
-PACKAGECONFIG[pam] = "--enable-pam --with-pam-dir=${base_libdir}/security, --disable-pam"
-PACKAGECONFIG[ssh-agent] = "--enable-ssh-agent,--disable-ssh-agent,,openssh-misc"
-
-FILES_${PN} += " \
-    ${datadir}/dbus-1/services \
-    ${datadir}/p11-kit \
-    ${base_libdir}/security/*${SOLIBSDEV} \
-    ${libdir}/pkcs11/gnome-keyring-pkcs11.so \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.34.0.bb
new file mode 100644
index 0000000..52c254b
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.34.0.bb
@@ -0,0 +1,51 @@
+SUMMARY = "Password and keyring managing daemon"
+HOMEPAGE = "http://www.gnome.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome"
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = " \
+    glib-2.0-native \
+    gtk+3 \
+    gcr \
+    libgcrypt \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} \
+"
+
+inherit gnomebase gsettings features_check remove-libtool gettext upstream-version-is-even
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.md5sum] = "7c8fd85e46ed4ba1add0288b2ead9aec"
+SRC_URI[archive.sha256sum] = "e9cda9542a3e37c61636145e7e9e2513c569092ea8020752a834e1f40ad41943"
+SRC_URI += " \
+    file://0001-Set-paths-to-ssh-agent-and-ssh-add-by-configure-opti.patch \
+    file://musl.patch \
+"
+
+PACKAGECONFIG ??= "ssh-agent"
+PACKAGECONFIG[ssh-agent] = "--enable-ssh-agent --with-ssh-agent-path=${bindir}/ssh-agent --with-ssh-add-path=${bindir}/ssh-add,--disable-ssh-agent,,openssh-misc"
+
+EXTRA_OECONF = " \
+    --disable-doc \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam --with-pam-dir=${base_libdir}/security', '--disable-pam', d)} \
+"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1/services \
+    ${datadir}/p11-kit \
+    ${base_libdir}/security/*${SOLIBSDEV} \
+    ${libdir}/pkcs11/gnome-keyring-pkcs11.so \
+"
+
+# fix | gnome-keyring-daemon: insufficient process capabilities, unsecure memory might get used
+# This does not make it through pseudo so perform on-target - sigh
+pkg_postinst_ontarget_${PN} () {
+    setcap cap_ipc_lock+ep `which gnome-keyring-daemon`
+}
+RDEPENDS_${PN} += "libcap-bin"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/libgnome-keyring_3.12.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/libgnome-keyring_3.12.0.bb
deleted file mode 100644
index ba69e2e..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/libgnome-keyring_3.12.0.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Compatibility library for accessing secrets"
-HOMEPAGE = "http://www.gnome.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "GPLv2 & LGPLv2"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=0914b9d3ebaba41ef2e3e0ae16f296cf \
-    file://COPYING.GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
-"
-SECTION = "x11/gnome/libs"
-
-inherit gnomebase gtk-doc gobject-introspection
-
-DEPENDS = "dbus libgcrypt glib-2.0 glib-2.0-native intltool-native"
-
-SRC_URI[archive.md5sum] = "6696e4f2e9aed4625cdc3af30bd8c238"
-SRC_URI[archive.sha256sum] = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783"
-
-
-# Fails to build with thumb-1 (qemuarm)
-#| {standard input}: Assembler messages:
-#| {standard input}:823: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#3'
-#| {standard input}:823: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#13'
-#| {standard input}:824: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#29'
-#| {standard input}:824: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#19'
-#| {standard input}:825: Error: lo register required -- `orr r10,r10,r10'
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.34.1.bb
new file mode 100644
index 0000000..74d71ec
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.34.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "GNOME Online Accounts - Single sign-on framework for GNOME"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=34c88b124db5fb2762c1676be7dadd36"
+
+GNOMEBASEBUILDCLASS = "autotools"
+
+inherit gnomebase gsettings gobject-introspection gsettings gtk-doc vala gettext upstream-version-is-even features_check
+
+# for webkitgtk
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI[archive.md5sum] = "aa94d1dd07ca53729a036b5df1c78c05"
+SRC_URI[archive.sha256sum] = "4832ca8e48d3a497fc676e7b6f146009ab4206995362977b9805aa39f164783a"
+
+# backend is required for gnome-control-center
+PACKAGECONFIG = "backend other"
+
+PACKAGECONFIG[backend] = "--enable-backend,--disable-backend,gtk+3 webkitgtk libsoup-2.4 json-glib libsecret rest libxml2"
+PACKAGECONFIG[krb5] = "--enable-kerberos, --disable-kerberos , krb5 gcr"
+
+# no extra dependencies!
+PACKAGECONFIG[other] = " \
+    --enable-facebook  --enable-foursquare  --enable-exchange  --enable-flickr  --enable-google  --enable-imap-smtp  --enable-owncloud  --enable-windows-live,\
+    --disable-facebook --disable-foursquare --disable-exchange --disable-flickr --disable-google --disable-imap-smtp --disable-owncloud --disable-windows-live, \
+"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${libdir}/goa-1.0/web-extensions/*.so \
+"
+
+# looked into pkg-config file: it is not a bug - they mean it
+FILES_${PN}-dev += "${libdir}/goa-1.0/include"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/0001-Do-not-try-to-find-ZONEINFO-it-tries-to-run-compiled.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/0001-Do-not-try-to-find-ZONEINFO-it-tries-to-run-compiled.patch
new file mode 100644
index 0000000..6ab4daf
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/0001-Do-not-try-to-find-ZONEINFO-it-tries-to-run-compiled.patch
@@ -0,0 +1,37 @@
+From d4b2f0922dfdd6040e5e9f62a2565452cf855c42 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Mon, 21 Oct 2019 22:10:56 +0200
+Subject: [PATCH] Do not try to find ZONEINFO - it tries to run compiled code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Missing configutation does not cause issues: The fallback in modules/clock/system-timezone.c
+matches our default.
+
+Inappropriate [embedded specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ configure.ac | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c75a9fa..0c9d945 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -249,11 +249,6 @@ dnl yelp-tools stuff
+ 
+ YELP_HELP_INIT
+ 
+-dnl **************************************************************************
+-dnl Find zoneinfo directory
+-dnl **************************************************************************
+-
+-AX_ZONEINFO
+ 
+ dnl **************************************************************************
+ dnl Process .in files
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.34.1.bb
new file mode 100644
index 0000000..4d5fdb6
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.34.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "GNOME flashback panel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit gnomebase gsettings itstool gnome-help gtk-icon-cache gtk-doc gettext upstream-version-is-even features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
+
+DEPENDS += " \
+    yelp-tools-native \
+    libwnck3 \
+    polkit \
+    dconf \
+    libgweather \
+    gnome-menus3 \
+    gnome-desktop3 \
+    gdm \
+"
+
+SRC_URI[archive.md5sum] = "cfd5d3fd548a2afdd8bd3bbdf9646bbd"
+SRC_URI[archive.sha256sum] = "a6bc0255252eeb4b964bcbe55fd7908b69f914c062c5ec8dff5ac0262d29b90d"
+SRC_URI += " \
+    file://0001-Do-not-try-to-find-ZONEINFO-it-tries-to-run-compiled.patch \
+"
+
+PACKAGECONFIG[eds] = "--enable-eds,--disable-eds,evolution-data-server"
+
+RDEPENDS_${PN} += "gdm-base"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_3.34.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_3.34.2.bb
new file mode 100644
index 0000000..15bf489
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_3.34.2.bb
@@ -0,0 +1,39 @@
+SUMMARY = "GNOME session"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    glib-2.0-native \
+    libxslt-native \
+    xmlto-native \
+    xtrans \
+    libice \
+    libsm \
+    virtual/libx11 \
+    gtk+3 \
+    gnome-desktop3 \
+    gsettings-desktop-schemas \
+    json-glib \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gettext gsettings upstream-version-is-even features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
+
+SRC_URI[archive.md5sum] = "38dcdb844a0349cc2fb10998095543e4"
+SRC_URI[archive.sha256sum] = "8bb77381650a03ae4be7260751363bd27da93f09bac1ddbc885f4ce44ebaf8e1"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', 'consolekit',d)}"
+
+PACKAGECONFIG[consolekit] = "-Dconsolekit=true, -Dconsolekit=false, consolekit"
+PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd_journal=true, -Dsystemd=false -Dsystemd_journal=false, systemd"
+
+FILES_${PN} += " \
+    ${datadir}/xsessions \
+    ${datadir}/wayland-sessions \
+    ${systemd_user_unitdir} \
+"
+
+RDEPENDS_${PN} += "gnome-shell gnome-settings-daemon gsettings-desktop-schemas"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_3.34.2.bb
similarity index 90%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_3.34.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_3.34.2.bb
index 65f6693..0b6865d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_3.34.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_3.34.2.bb
@@ -28,8 +28,8 @@
 REQUIRED_DISTRO_FEATURES = "x11 polkit pulseaudio systemd gobject-introspection-data"
 UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
 
-SRC_URI[archive.md5sum] = "cdd0d0c8664056deb78aa40c88ec24d1"
-SRC_URI[archive.sha256sum] = "9981a20babf8da7744b7fbe175b9e36078bf08f3bf65fe5aedeb82cfe27ac11f"
+SRC_URI[archive.md5sum] = "493332fa0f36645188468fed41c0060b"
+SRC_URI[archive.sha256sum] = "9fbae67e217e53b99e4f9e7d392c91ffbe31253941c9b136ef09c2d9db7ad7ed"
 
 # allow cross build mixed with build of native tools
 do_write_config_append() {
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_3.34.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_3.34.2.bb
new file mode 100644
index 0000000..52e5070
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_3.34.2.bb
@@ -0,0 +1,29 @@
+SUMMARY = "GNOME Shell Extensions"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4cb3a392cbf81a9e685ec13b88c4c101"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gettext gsettings features_check upstream-version-is-even
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
+
+SRC_URI[archive.md5sum] = "d3a69cde0c3e3dc0b0c243af026c4b7a"
+SRC_URI[archive.sha256sum] = "a1e16e75a06ea511435a6f7478de92aff21d02d4e1d59ec8ce7fb6396819b4b8"
+
+DEPENDS += " \
+    sassc-native \
+"
+
+EXTRA_OEMESON += " \
+    -Dextension_set=all \
+    -Dclassic_mode=true \
+"
+
+RDEPENDS_${PN} += "gnome-shell"
+
+FILES_${PN} += " \
+    ${datadir}/gnome-shell \
+    ${datadir}/gnome-session \
+    ${datadir}/xsessions \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.3.bb
new file mode 100644
index 0000000..463fbf4
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.3.bb
@@ -0,0 +1,64 @@
+SUMMARY = "GNOME Shell is the graphical shell of the GNOME desktop environment"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gettext gobject-introspection features_check upstream-version-is-even bash-completion
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
+
+DEPENDS = " \
+    libxml2-native \
+    sassc-native \
+    gtk+3 \
+    mutter \
+    evolution-data-server \
+    gcr \
+    gjs \
+    gnome-autoar \
+    polkit \
+    libcroco \
+    startup-notification \
+    ibus \
+    gsettings-desktop-schemas \
+"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
+
+SRC_URI[archive.md5sum] = "a0f7d78f57616076890f0e3b7f12196a"
+SRC_URI[archive.sha256sum] = "2474bef386c5a47d7be285aa22e24125c46ba5f860a25a1a36a90de4e456bd8a"
+
+PACKAGECONFIG ??= "bluetooth nm ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[bluetooth] = ",,gnome-bluetooth"
+PACKAGECONFIG[nm] = "-Dnetworkmanager=true, -Dnetworkmanager=false, networkmanager"
+PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
+
+EXTRA_OEMESON = " \
+    -Dman=false \
+"
+
+do_install_append() {
+    # fix shebangs
+    for tool in `find ${D}${bindir} -name '*-tool'`; do
+        sed -i 's:#!${PYTHON}:#!${bindir}/${PYTHON_PN}:' $tool
+    done
+}
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/gnome-control-center \
+    ${datadir}/xdg-desktop-portal \
+    ${systemd_user_unitdir} \
+"
+
+RDEPENDS_${PN} += "gsettings-desktop-schemas gdm-base librsvg-gtk"
+
+PACKAGES =+ "${PN}-tools"
+FILES_${PN}-tools = "${bindir}/*-tool"
+RDEPENDS_${PN}-tools = "python3-core"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_3.32.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_3.32.1.bb
index a3583d1..f30edee 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_3.32.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_3.32.1.bb
@@ -14,7 +14,7 @@
 
 GNOMEBASEBUILDCLASS = "meson"
 
-inherit gnomebase gnome-help itstool gtk-icon-cache features_check gettext upstream-version-is-even
+inherit gnomebase gsettings gnome-help itstool gtk-icon-cache features_check gettext upstream-version-is-even
 
 REQUIRED_DISTRO_FEATURES = "x11 polkit"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks/0001-Make-python-path-configurable.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks/0001-Make-python-path-configurable.patch
new file mode 100644
index 0000000..8129f85
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks/0001-Make-python-path-configurable.patch
@@ -0,0 +1,41 @@
+From db94983c93f38bd8494b47d9fa1b3e5368dc9abe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Wed, 11 Dec 2019 01:34:01 +0100
+Subject: [PATCH] Make python path configurable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [Configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ meson.build       | 2 +-
+ meson_options.txt | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+ create mode 100644 meson_options.txt
+
+diff --git a/meson.build b/meson.build
+index b7da518..d58fb5b 100644
+--- a/meson.build
++++ b/meson.build
+@@ -13,7 +13,7 @@ bindir = join_paths(prefix, get_option('bindir'))
+ datadir = join_paths(prefix, get_option('datadir'))
+ libexecdir = join_paths(prefix, get_option('libexecdir'))
+ localedir = join_paths(prefix, get_option('localedir'))
+-pythondir = join_paths(prefix, python3.sysconfig_path('purelib'))
++pythondir = get_option('python_site_dir')
+ 
+ pkgdatadir = join_paths(datadir, meson.project_name())
+ 
+diff --git a/meson_options.txt b/meson_options.txt
+new file mode 100644
+index 0000000..03455ca
+--- /dev/null
++++ b/meson_options.txt
+@@ -0,0 +1,2 @@
++option('python_site_dir', type: 'string', value: '')
++
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_3.34.0.bb
new file mode 100644
index 0000000..af4c8c6
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_3.34.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "GNOME tweaks: Advanced options for GNOME 3 session"
+LICENSE = "GPLv3 & CC0-1.0"
+LIC_FILES_CHKSUM = " \
+    file://LICENSES/CC0-1.0;md5=65d3616852dbf7b1a6d4b53b00626032 \
+    file://LICENSES/GPL-3.0;md5=9eef91148a9b14ec7f9df333daebc746 \
+"
+
+DEPENDS = "libhandy"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gtk-icon-cache gobject-introspection features_check upstream-version-is-even
+
+# same as gnome-shell
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
+
+SRC_URI[archive.md5sum] = "a625d8b167c5549c68e1c6ac7a87d369"
+SRC_URI[archive.sha256sum] = "003326fab46e6faad9485924bca503f0c583e3b4553d6f673406eda396205250"
+SRC_URI += "file://0001-Make-python-path-configurable.patch"
+
+EXTRA_OEMESON = "-Dpython_site_dir=${PYTHON_SITEPACKAGES_DIR}"
+
+FILES_${PN} += " \
+    ${datadir}/metainfo \
+    ${PYTHON_SITEPACKAGES_DIR} \
+"
+
+RDEPENDS_${PN} += "gnome-shell python3-core python3-logging libhandy"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.10.bb b/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.10.bb
new file mode 100644
index 0000000..e3fd671
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.10.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Grilo is a framework forsearching media content from various sources"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+DEPENDS = " \
+    libxml2 \
+    glib-2.0 \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gobject-introspection gtk-doc gettext vala
+
+SRC_URI[archive.md5sum] = "f02bf585d1a48dc65be8b90ae3b08330"
+SRC_URI[archive.sha256sum] = "7e44b2e74c31ed24eb97e43265a9e41effe8660287b02295111805c7bda7f1e8"
+
+GIR_MESON_OPTION = "enable-introspection"
+GTKDOC_MESON_OPTION = "enable-gtk-doc"
+
+# Note: removing 'net' from PACKAGECONFIG causes
+# | bindings/vala/meson.build:15:0: ERROR: Unknown variable "grlnet_gir".
+PACKAGECONFIG ??= "net"
+
+PACKAGECONFIG[net] = "-Denable-grl-net=true, -Denable-grl-net=false, libsoup-2.4"
+PACKAGECONFIG[test-ui] = "-Denable-test-ui=true, -Denable-test-ui=false, gtk+3 liboauth"
+
+# Once we have a recipe for 'totem-plparser' this can turn into a PACKAGECONFIG
+EXTRA_OEMESON = "-Denable-grl-pls=false"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.2.bb
new file mode 100644
index 0000000..e4478e1
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.2.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Small gobject library for playing system sounds"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=447b837ae57f08b7060593ac6256163f"
+
+DEPENDS = " \
+    glib-2.0 \
+    libcanberra \
+"
+
+inherit gnomebase gettext gobject-introspection vala
+
+SRC_URI[archive.md5sum] = "c26fd21c21b9ef6533a202a73fab21db"
+SRC_URI[archive.sha256sum] = "bba8ff30eea815037e53bee727bbd5f0b6a2e74d452a7711b819a7c444e78e53"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.42.2.bb
similarity index 83%
rename from meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.41.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.42.2.bb
index 27e3f92..f04246f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.42.2.bb
@@ -3,15 +3,17 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e"
 
 GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase bash-completion gettext upstream-version-is-even
+inherit gnomebase gsettings bash-completion gettext upstream-version-is-even features_check useradd
 
-DEPENDS += "libsecret glib-2.0 glib-2.0-native gconf libgudev shadow-native"
+DEPENDS += "libsecret glib-2.0 glib-2.0-native libgudev shadow-native \
+            gsettings-desktop-schemas dbus"
 
 SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
+SRC_URI[archive.md5sum] = "8dea2f6a3f327a814a347758d4350e4b"
+SRC_URI[archive.sha256sum] = "b57af97573bd295aa50037eed29c6ba7a36188230c515e007c3018855a5cf949"
 
-SRC_URI[archive.md5sum] = "9a9a97a63bb9e87258d48086a6bdacaa"
-SRC_URI[archive.sha256sum] = "f311b7c5f855ebe259960c00c7d03c812e040928ecb0ec093b50a4f16b3bcf26"
-
+# depends on gsettings-desktop-schemas->gcr->gtk+3-> x11
+REQUIRED_DISTRO_FEATURES = "x11"
 
 EXTRA_OEMESON = " \
     -Dbluray=false \
@@ -65,6 +67,9 @@
 # libcdio-paranoia recipe doesn't exist yet
 PACKAGECONFIG[cdda] = "-Dcdda=true, -Dcdda=false, libcdio-paranoia"
 
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd"
+
 do_install_append() {
     if ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'true', 'false', d)}; then
         # Fix up permissions on polkit rules.d to work with rpm4 constraints
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.10.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.11.bb
similarity index 81%
rename from meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.10.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.11.bb
index 7bedd87..197a05d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.10.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.11.bb
@@ -12,7 +12,10 @@
 GTKDOC_MESON_OPTION = "gtk_doc"
 GNOMEBASEBUILDCLASS = "meson"
 
-inherit gnomebase pkgconfig gettext gtk-doc vala gobject-introspection manpages
+inherit gnomebase pkgconfig gettext gtk-doc vala gobject-introspection manpages features_check
+
+# gcr
+REQUIRED_DISTRO_FEATURES = "x11"
 
 do_compile_prepend() {
     export GIR_EXTRA_LIBS_PATH="${B}/gdata/.libs"
@@ -26,5 +29,5 @@
 
 EXTRA_OEMESON = "-Dalways_build_tests=false"
 
-SRC_URI[archive.md5sum] = "d858d411ad394c275643b14993dfeed4"
-SRC_URI[archive.sha256sum] = "c1d3d1f303f6a0416a0dac355a195276c31157a74bb1d040772d46d1cb15b012"
+SRC_URI[archive.md5sum] = "7b98e9059255d8a2fb147c4e727230a8"
+SRC_URI[archive.sha256sum] = "6b9917122e4def6e6f78bcb660e49e146540832e296abcb5cde99829a04ea986"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_3.26.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_3.26.1.bb
index d3b3bde..2a2db9c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_3.26.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_3.26.1.bb
@@ -4,14 +4,11 @@
 
 SECTION = "x11/gnome/libs"
 
-DEPENDS = "gconf glib-2.0 libxklavier gtk+3 intltool-native"
+DEPENDS = "glib-2.0 gtk+3 libxklavier"
 
-inherit features_check gnomebase gobject-introspection gettext
+inherit features_check gnomebase gobject-introspection gsettings gettext
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI[archive.md5sum] = "98040022484406e7ebe25f82cef93344"
 SRC_URI[archive.sha256sum] = "f7ca02631576e9b88aee1b1bae37ac1488b80ee7975f20a97f29e761a7172679"
-
-EXTRA_OECONF_remove = "--disable-schemas-install"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgsf/files/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch b/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch
similarity index 100%
rename from meta-openembedded/meta-gnome/recipes-gnome/libgsf/files/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch
rename to meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.45.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.45.bb
deleted file mode 100644
index ac36ceb..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.45.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "GNOME Structured File Library"
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dc7371b50816c96e145fa0f8ade8e24d \
-                    file://COPYING.LIB;md5=61464cfe342798eeced82efe9ae55f63"
-
-SECTION = "libs"
-
-DEPENDS= "libxml2 bzip2 glib-2.0 zlib intltool-native gnome-common-native"
-
-inherit autotools pkgconfig gnomebase gobject-introspection
-
-SRC_URI += "file://0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch"
-
-SRC_URI[archive.md5sum] = "e45cc8aa9c49516d540b7d7307f755f1"
-SRC_URI[archive.sha256sum] = "5cbc2c0f1dc44d202fa0c6e3a51e9f17b0c2deb8711ba650432bfde3180b69fa"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gdk-pixbuf] = "--with-gdk-pixbuf,--without-gdk-pixbuf,gdk-pixbuf"
-
-EXTRA_OECONF = "\
-    --disable-gtk-doc \
-    --with-bz2 \
-"
-
-RDEPENDS_${PN} = "gconf"
-
-FILES_${PN} += "${datadir}/thumbnailers"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.46.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.46.bb
new file mode 100644
index 0000000..049320a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.46.bb
@@ -0,0 +1,23 @@
+SUMMARY = "GNOME Structured File Library"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dc7371b50816c96e145fa0f8ade8e24d \
+                    file://COPYING.LIB;md5=61464cfe342798eeced82efe9ae55f63"
+
+SECTION = "libs"
+
+DEPENDS= "libxml2 bzip2 glib-2.0 zlib gnome-common-native"
+
+inherit gnomebase gobject-introspection gettext gtk-doc
+
+SRC_URI[archive.md5sum] = "5bc6d1d6394f0ed5a58e8f2e5e4ead7f"
+SRC_URI[archive.sha256sum] = "ea36959b1421fc8e72caa222f30ec3234d0ed95990e2bf28943a85f33eadad2d"
+SRC_URI += "file://0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gdk-pixbuf] = "--with-gdk-pixbuf,--without-gdk-pixbuf,gdk-pixbuf"
+
+EXTRA_OECONF = "\
+    --with-bz2 \
+"
+
+FILES_${PN} += "${datadir}/thumbnailers"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.32.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.32.0.bb
deleted file mode 100644
index 8f15c57..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.32.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SECTION = "x11/wm"
-SUMMARY = "Metacity is the boring window manager for the adult in you"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b4cce53560b8e619ffa7c830fb8761aa \
-                    file://src/include/main.h;endline=24;md5=72148ede07a6dadd01de6a882d20a9ad"
-
-PE = "1"
-
-DEPENDS = "gsettings-desktop-schemas startup-notification \
-           gnome-doc-utils gdk-pixbuf-native \
-           gtk+3 glib-2.0 libcanberra libgtop intltool-native"
-
-inherit autotools gettext gnomebase features_check
-# depends on startup-notification which depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "git://github.com/GNOME/metacity.git;branch=master \
-           file://0001-drop-zenity-detection.patch \
-"
-
-S = "${WORKDIR}/git"
-SRCREV = "bf1bfbadf47eff97703df17e95b15168e2034222"
-
-EXTRA_OECONF += "--disable-xinerama"
-
-PACKAGECONFIG ?= ""
-
-# enable as neccessary until new warnings are dealt with
-PACKAGECONFIG[werror] = "--enable-Werror,--disable-Werror,,"
-
-do_configure_prepend() {
-    cd ${S}
-    aclocal --install || exit 1
-    autoreconf --verbose --force --install -Wno-portability || exit 1
-    cd -
-
-}
-
-FILES_${PN} += "${datadir}/themes ${datadir}/gnome-control-center ${datadir}/gnome"
-RDEPENDS_${PN} += "gsettings-desktop-schemas"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.34.1.bb
new file mode 100644
index 0000000..d8c8b53
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.34.1.bb
@@ -0,0 +1,38 @@
+SECTION = "x11/wm"
+SUMMARY = "Metacity is the boring window manager for the adult in you"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b4cce53560b8e619ffa7c830fb8761aa \
+                    file://src/include/main.h;endline=24;md5=72148ede07a6dadd01de6a882d20a9ad"
+
+PE = "1"
+
+DEPENDS = " \
+    gdk-pixbuf-native \
+    gtk+3 \
+    gsettings-desktop-schemas \
+    startup-notification \
+    libcanberra \
+    libgtop \
+"
+
+
+# depends on startup-notification which depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+inherit gnomebase gsettings gettext upstream-version-is-even features_check
+
+SRC_URI[archive.md5sum] = "c0c10204e4d6d024cb413042c1de316b"
+SRC_URI[archive.sha256sum] = "31c7d1045c390afb3bf405735b0b26c459197cbf43af37c469eb8918ce3a453d"
+SRC_URI += "file://0001-drop-zenity-detection.patch"
+
+PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
+# enable as neccessary until new warnings are dealt with
+PACKAGECONFIG[werror] = "--enable-Werror,--disable-Werror,,"
+
+FILES_${PN} += " \
+    ${datadir}/themes \
+    ${datadir}/gnome-control-center \
+    ${datadir}/gnome\
+"
+
+RDEPENDS_${PN} += "gsettings-desktop-schemas"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter/0001-cogl-Fix-GLES2-fallback.patch b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter/0001-cogl-Fix-GLES2-fallback.patch
new file mode 100644
index 0000000..ec92000
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter/0001-cogl-Fix-GLES2-fallback.patch
@@ -0,0 +1,37 @@
+From f4f7e31303d78b2a8a0881b61311b8d750301b8f Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 29 Oct 2019 11:53:27 -0400
+Subject: [PATCH] cogl: Fix GLES2 fallback
+
+Say you're using intel gen3, you poor soul. Your big-GL maxes out at 1.5
+unless you use dirty tricks, but you do have GLES2. We try to fall back
+to GLES in this case, but we only ever say eglBindAPI(EGL_OPENGL_API).
+So when we go to do CreateContext, even though we think we've requested
+GLES 2.0, the driver will compare that "2.0" against the maximum big-GL
+version, and things will fail.
+
+Fix this by binding EGL_OPENGL_ES_API before trying a GLES context.
+
+https://gitlab.gnome.org/GNOME/mutter/issues/635
+
+Upstream-Status: Applied
+---
+ cogl/cogl/winsys/cogl-winsys-egl.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/cogl/cogl/winsys/cogl-winsys-egl.c b/cogl/cogl/winsys/cogl-winsys-egl.c
+index 99dcb8bf3..f2b439a67 100644
+--- a/cogl/cogl/winsys/cogl-winsys-egl.c
++++ b/cogl/cogl/winsys/cogl-winsys-egl.c
+@@ -329,6 +329,8 @@ try_create_context (CoglDisplay *display,
+   if (renderer->driver == COGL_DRIVER_GL ||
+       renderer->driver == COGL_DRIVER_GL3)
+     eglBindAPI (EGL_OPENGL_API);
++  else if (renderer->driver == COGL_DRIVER_GLES2)
++    eglBindAPI (EGL_OPENGL_ES_API);
+ 
+   egl_attributes_from_framebuffer_config (display,
+                                           &display->onscreen_template->config,
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.3.bb
new file mode 100644
index 0000000..9afa269
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.3.bb
@@ -0,0 +1,96 @@
+SUMMARY = "Window and compositing manager based on Clutter"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    xserver-xorg-cvt-native \
+    virtual/libx11 \
+    gtk+3 \
+    gdk-pixbuf \
+    cairo \
+    pango \
+    gsettings-desktop-schemas \
+    json-glib \
+    gnome-desktop3 \
+    gnome-settings-daemon \
+    libxtst \
+    libxkbfile \
+    xinerama \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gobject-introspection gettext upstream-version-is-even features_check
+
+SRC_URI[archive.md5sum] = "c3ee46ae7b84d9d0e8dd3f9e04a61ab1"
+SRC_URI[archive.sha256sum] = "cdf57ddd0bc35db952b732b77c796760e65d1ce2f7df31273e5c8d4759ed4a89"
+SRC_URI += "file://0001-cogl-Fix-GLES2-fallback.patch"
+
+# x11 is still manadatory - see meson.build
+REQUIRED_DISTRO_FEATURES = "x11"
+
+# systemd can be replaced by libelogind (not available atow - make systemd
+# mandatory distro feature)
+LOGIND ?= "systemd"
+REQUIRED_DISTRO_FEATURES += "systemd"
+
+# profiler requires sysprof 3.34 which is not willing to build atow
+PACKAGECONFIG ??= " \
+    native-backend \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl glx', '', d)} \
+    sm \
+    startup-notification \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'wayland', '', d)} \
+"
+
+EXTRA_OEMESON += " \
+    -Dxwayland_path=${bindir}/Xwayland \
+"
+
+# combi-config - see meson_options.txt for more details
+PACKAGECONFIG[native-backend] = "-Dnative_backend=true -Dudev=true, -Dnative_backend=false -Dudev=false, libdrm virtual/libgbm libinput ${LOGIND} virtual/egl virtual/libgles2 udev"
+PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=true, virtual/libgl"
+PACKAGECONFIG[glx] = "-Dglx=true, -Dglx=false"
+PACKAGECONFIG[libwacom] = "-Dlibwacom=true, -Dlibwacom=false, libwacom"
+PACKAGECONFIG[remote-desktop] = "-Dremote_desktop=true, -Dremote_desktop=false, pipewire"
+PACKAGECONFIG[sm] = "-Dsm=true, -Dsm=false, libsm"
+PACKAGECONFIG[profiler] = "-Dprofiler=true,-Dprofiler=false,sysprof"
+PACKAGECONFIG[startup-notification] = "-Dstartup_notification=true, -Dstartup_notification=false, startup-notification, startup-notification"
+PACKAGECONFIG[wayland] = "-Dwayland=true,-Dwayland=false,wayland wayland-native, xserver-xorg-xwayland"
+PACKAGECONFIG[wayland-eglstream] = "-Dwayland_eglstream=true,-Dwayland_eglstream=false"
+
+# yes they changed from mutter-4 -> mutter-5 recently so be perpared
+MUTTER_API_NAME = "mutter-5"
+
+do_install_append() {
+    # Add gir links in standard paths. That makes dependents life much easier
+    # to find them
+    install -d ${D}${datadir}/gir-1.0
+    for gir_full in `find ${D}${libdir}/${MUTTER_API_NAME} -name '*.gir'`; do
+        gir=`basename "$gir_full"`
+        ln -sr "${D}${libdir}/${MUTTER_API_NAME}/$gir" "${D}${datadir}/gir-1.0/$gir"
+    done
+}
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN} += " \
+    ${datadir}/gnome-control-center \
+    ${libdir}/${MUTTER_API_NAME}/lib*${SOLIBS} \
+    ${libdir}/${MUTTER_API_NAME}/*.typelib \
+    ${libdir}/${MUTTER_API_NAME}/plugins \
+"
+
+FILES_${PN}-tests += " \
+    ${datadir}/installed-tests \
+    ${datadir}/${MUTTER_API_NAME}/tests \
+    ${libexecdir}/installed-tests/${MUTTER_API_NAME} \
+"
+
+FILES_${PN}-dev += " \
+    ${libdir}/${MUTTER_API_NAME}/*.gir \
+    ${libdir}/${MUTTER_API_NAME}/lib*.so \
+"
+
+RDEPENDS_${PN} += "zenity"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_3.34.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_3.34.2.bb
similarity index 64%
rename from meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_3.34.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_3.34.2.bb
index 789a11df..bacc967 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_3.34.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_3.34.2.bb
@@ -17,8 +17,8 @@
 
 inherit gnomebase gsettings gobject-introspection gtk-doc gettext features_check upstream-version-is-even
 
-SRC_URI[archive.md5sum] = "19e4f1d89fb9d0ff135d5b1974ce43b5"
-SRC_URI[archive.sha256sum] = "37ce2c16a610c589dcc7660f9092446465568e38e29bce6ed8c24f2e8e0077f3"
+SRC_URI[archive.md5sum] = "88573061544040c0ff960f934aa83719"
+SRC_URI[archive.sha256sum] = "bb06e226b965f479a0b8668c19c8e1762b9d8f039af6817961cc7a8f09e6f8a7"
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
@@ -30,3 +30,7 @@
     ${datadir}/metainfo \
     ${datadir}/gnome-shell \
 "
+
+# mandatory - not checked during configuration:
+# | (org.gnome.Nautilus:863): GLib-GIO-ERROR **: 21:03:52.326: Settings schema 'org.freedesktop.Tracker.Miner.Files' is not installed
+RDEPENDS_${PN} += "tracker-miners"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
new file mode 100644
index 0000000..33b8744
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "library to access web services that claim to be "RESTful""
+HOMPAGE = "https://wiki.gnome.org/Projects/Librest"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+GNOMEBASEBUILDCLASS = "autotools"
+
+DEPENDS = " \
+    libxml2-native \
+    glib-2.0-native \
+    glib-2.0 \
+    libsoup-2.4 \
+"
+
+inherit gnomebase gobject-introspection gtk-doc vala
+
+SRC_URI[archive.md5sum] = "ece4547298a81105f307369d73c21b9d"
+SRC_URI[archive.sha256sum] = "0513aad38e5d3cedd4ae3c551634e3be1b9baaa79775e53b2dba9456f15b01c9"
+
+# * gnome environment requires libsoup build with in gnome PACKAGECONFIG
+# * libsoup-gnome support was removed upstream three years ago [1]
+# [1] https://gitlab.gnome.org/GNOME/librest/commit/8f904a8e2bb38a7bf72245cdf2f1ecad17e9a720
+EXTRA_OECONF = "--without-gnome"
+
+do_configure_prepend() {
+    # rest expects introspection.m4 at custom location (see aclocal.m4).
+    cp -f ${STAGING_DIR_TARGET}/${datadir}/aclocal/introspection.m4 ${S}/build
+}
+
+do_compile_prepend() {
+    export GIR_EXTRA_LIBS_PATH="${B}/rest/.libs"
+}
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch
new file mode 100644
index 0000000..c9eb799
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch
@@ -0,0 +1,37 @@
+From 54ea2cabf85ad1bd5695cdbd1935115c9495e80c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sun, 1 Dec 2019 17:06:59 +0100
+Subject: [PATCH] meson.build: Just warn if we build without libseccomp
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+libseccomp lives in meta-security currently and we cannot make it a mandatory
+dependency. Once somebody moves libseccomp to meta-oe and adjusts all the
+target specific knobs this patch can go. For discussion see [1].
+
+[1] http://lists.openembedded.org/pipermail/openembedded-devel/2019-November/203234.html
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 71a9df4..1eaa1a0 100644
+--- a/meson.build
++++ b/meson.build
+@@ -279,7 +279,7 @@ cpu_supports_seccomp = not unsupported_cpus.contains(host_cpu)
+ seccomp_required = system_supports_seccomp and cpu_supports_seccomp
+ 
+ if not libseccomp.found() and seccomp_required
+-  error('Libseccomp is mandatory for sandboxed metadata extraction')
++  warning('Building without Libseccomp might cause security issues!')
+ endif
+ 
+ ####################################################################
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_2.3.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_2.3.1.bb
new file mode 100644
index 0000000..3dbbcaf
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_2.3.1.bb
@@ -0,0 +1,68 @@
+SUMMARY = "Tracker miners and metadata extractors"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = " \
+    file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
+    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+"
+
+DEPENDS = " \
+    intltool-native \
+    tracker \
+    zlib \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gobject-introspection vala gtk-doc manpages bash-completion features_check
+
+SRC_URI[archive.md5sum] = "0321d8f4ad27e3fccdbc8384e5b3cb83"
+SRC_URI[archive.sha256sum] = "7b1de06a7a79ea1c7813c8a21f8cd1c55f2b95f799cf9f47f0204f3be8a590e0"
+SRC_URI += "file://0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
+
+PACKAGECONFIG ??= " \
+    ffmpeg \
+    flac \
+    gexiv2 \
+    gstreamer \
+    icu \
+    libexif \
+    libgsf \
+    jpeg \
+    png \
+    tiff \
+    xml \
+    pdf \
+"
+
+PACKAGECONFIG[ffmpeg]     = ",,ffmpeg"
+PACKAGECONFIG[flac]       = "-Dflac=enabled,-Dflac=disabled,flac"
+PACKAGECONFIG[gexiv2]     = ",,gexiv2"
+PACKAGECONFIG[gstreamer]  = ",,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[gupnp]      = ",,gupnp-dlna"
+PACKAGECONFIG[icu]        = ",,icu"
+PACKAGECONFIG[libexif]    = "-Dexif=enabled,-Dexif=disabled,libexif"
+PACKAGECONFIG[libgsf]     = "-Dgsf=enabled,-Dgsf=disabled,libgsf"
+PACKAGECONFIG[jpeg]       = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
+PACKAGECONFIG[png]        = "-Dpng=enabled,-Dpng=disabled,libpng"
+PACKAGECONFIG[tiff]       = "-Dtiff=enabled,-Dtiff=disabled,tiff"
+PACKAGECONFIG[xml]        = "-Dxml=enabled,-Dxml=disabled,libxml2"
+PACKAGECONFIG[vorbis]     = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis"
+PACKAGECONFIG[pdf]        = "-Dpdf=enabled,-Dpdf=disabled,poppler"
+PACKAGECONFIG[upower]     = ",,upower"
+
+# For security reasons it is strongly recommended to set add meta-security in
+# your layers and 'libseccomp' to PACKAGECONFIG".
+PACKAGECONFIG[libseccomp] = ",,libseccomp"
+# not yet in meta-gnome
+PACKAGECONFIG[rss]        = "-Dminer_rss=true,-Dminer_rss=false,libgrss"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/tracker \
+    ${libdir}/tracker-miners-2.0 \
+    ${systemd_user_unitdir} \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.34.2.bb
similarity index 77%
rename from meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.34.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.34.2.bb
index 20052cf..38947d1 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.34.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.34.2.bb
@@ -10,8 +10,8 @@
 
 DEPENDS += "libxml2"
 
-SRC_URI[archive.md5sum] = "f8c4e777aee8b055251c333ef48a0cd0"
-SRC_URI[archive.sha256sum] = "e8063aee67d1df634f3d062f1c28130b2dabb3c0c66396b1af90388f34e14ee2"
+SRC_URI[archive.md5sum] = "b9c1c53a9114b42054789f212ab37f59"
+SRC_URI[archive.sha256sum] = "0c3fe6146113df26fb1295901b1c7baed9f0fe67a87f4345e11543aefe7cb7ad"
 
 RDEPENDS_${PN}_append_class-target = " libxml2 itstool"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.34.0.bb
index f631196..348727e 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.34.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.34.0.bb
@@ -4,7 +4,10 @@
     file://COPYING;md5=6e1b9cb787e76d7e6946887a65caa754 \
 "
 
-inherit gnomebase itstool autotools-brokensep gsettings gettext gtk-doc
+inherit gnomebase itstool autotools-brokensep gsettings gettext gtk-doc features_check
+
+# for webkitgtk
+REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI[archive.md5sum] = "776e29bd16424c8712cbf340cfe6429b"
 SRC_URI[archive.sha256sum] = "e3d6527c5963d73206891b32f1f23363164be57de248555513bd0be77a7bd045"
diff --git a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch
new file mode 100644
index 0000000..c2310fe
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch
@@ -0,0 +1,36 @@
+From 2a1c7103839c20df5ca9ce2fa863535d802f8f3a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sun, 8 Dec 2019 23:42:00 +0100
+Subject: [PATCH] musl: Hack to fix configure
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ meson.build | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 4465a26..726c9fe 100644
+--- a/meson.build
++++ b/meson.build
+@@ -82,8 +82,14 @@ if cc.has_header_symbol('utmpx.h', 'WTMPX_FILENAME', prefix: '#define _GNU_SOURC
+ elif cc.has_header_symbol('paths.h', '_PATH_WTMPX')
+   config_h.set('PATH_WTMP', '_PATH_WTMPX')
+ else
+-  assert(run_command('test', '-e', '/var/log/utx.log').returncode() == 0, 'Do not know which filename to watch for wtmp changes')
+-  config_h.set_quoted('PATH_WTMP', '/var/log/utx.log')
++  # musl: This is just a build fix hack.
++  # As usual they know better, consider all other projects crap and offer zero
++  # alternatives: So wtmp is a dead stub only [1] (= /dev/null/wtmp - taken
++  # from musl sources).
++  # Maybe a hero comes along and adds utmps [2] to make accountsservice useful for musl
++  # [1] https://wiki.musl-libc.org/faq.html#Q:-Why-is-the-utmp/wtmp-functionality-only-implemented-as-stubs?
++  # [2] https://github.com/skarnet/utmps
++  config_h.set_quoted('PATH_WTMP', '/dev/null/wtmp')
+ endif
+ 
+ # compiler flags
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0002-musl-add-missing-fgetspent_r.patch b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0002-musl-add-missing-fgetspent_r.patch
new file mode 100644
index 0000000..1416180
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0002-musl-add-missing-fgetspent_r.patch
@@ -0,0 +1,46 @@
+From 820249ea8e38c568e6a36fbd9c852718c7665b56 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Mon, 9 Dec 2019 00:12:08 +0100
+Subject: [PATCH] musl: add missing fgetspent_r
+
+Stolen from void-linux
+
+Upstream-Status: Inappropriate [musl-specific]
+---
+ src/daemon.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/daemon.c b/src/daemon.c
+index c52bda3..a7676fe 100644
+--- a/src/daemon.c
++++ b/src/daemon.c
+@@ -164,6 +164,26 @@ remove_cache_files (const gchar *user_name)
+         g_remove (icon_filename);
+ }
+ 
++/* Musl libc does not support fgetspent_r(), write own
++ * wrapper
++ */
++static int fgetspent_r(FILE *fp, struct spwd *spbuf, char *buf, size_t buflen, struct spwd **spbufp) {
++       struct spwd *shadow_entry = fgetspent(fp);
++       if(!shadow_entry)
++               return -1;
++       size_t namplen = strlen(shadow_entry->sp_namp);
++       size_t pwdplen = strlen(shadow_entry->sp_pwdp);
++
++       if(namplen + pwdplen + 2 > buflen)
++               return -1;
++
++       *spbufp = memcpy(spbuf, shadow_entry, sizeof(struct spwd));
++       spbuf->sp_namp = strncpy(buf, shadow_entry->sp_namp, namplen + 1);
++       spbuf->sp_pwdp = strncpy(buf + namplen + 1, shadow_entry->sp_pwdp, pwdplen + 1);
++
++       return 0;
++}
++
+ static struct passwd *
+ entry_generator_fgetpwent (Daemon       *daemon,
+                            GHashTable   *users,
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb
new file mode 100644
index 0000000..edc4890
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "D-Bus interfaces for querying and manipulating user account information"
+HOMEPAGE = "https://www.freedesktop.org/wiki/Software/AccountsService/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+    dbus \
+    polkit \
+"
+
+inherit meson gobject-introspection gtk-doc features_check systemd
+
+REQUIRED_DISTRO_FEATURES = "polkit"
+
+SRC_URI = "https://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI_append_libc-musl = " \
+    file://0001-musl-Hack-to-fix-build.patch \
+    file://0002-musl-add-missing-fgetspent_r.patch \
+"
+SRC_URI[md5sum] = "6e4c6fbd490260cfe17de2e76f5d803a"
+SRC_URI[sha256sum] = "ff2b2419a7e06bd9cb335ffe391c7409b49a0f0130b890bd54692a3986699c9b"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false -Dsystemdsystemunitdir='no', systemd"
+
+SYSTEMD_SERVICE_${PN} = "accounts-daemon.service"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/polkit-1 \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb b/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb
index 8f6cd04..7845509 100644
--- a/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb
@@ -18,4 +18,8 @@
 
 # gobject-introspection is mandatory and cannot be configured
 REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+
+# colord
+REQUIRED_DISTRO_FEATURES += "polkit"
+
 UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
diff --git a/meta-openembedded/meta-gnome/recipes-support/libhandy/libhandy_git.bb b/meta-openembedded/meta-gnome/recipes-support/libhandy/libhandy_git.bb
new file mode 100644
index 0000000..8c6159f
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/libhandy/libhandy_git.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A library full of GTK+ widgets for mobile phones"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://source.puri.sm/Librem5/${BPN}.git;protocol=https"
+SRCREV = "ef7c4bf75ae239495141ada83d2fbaf034315563"
+S = "${WORKDIR}/git"
+PV = "0.0.12"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+inherit meson gobject-introspection vala gettext gtk-doc features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+DEPENDS += "gtk+3"
+
+PACKAGES =+ "${PN}-examples"
+FILES_${PN}-examples = "${bindir}"
diff --git a/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
new file mode 100644
index 0000000..522e9e9
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
@@ -0,0 +1,20 @@
+SUMMARY = "GNOME applications"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit packagegroup features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+RDEPENDS_${PN} = " \
+    evolution-data-server \
+    evince \
+    file-roller \
+    gedit \
+    gnome-calculator \
+    gnome-font-viewer \
+    gnome-terminal \
+    libwnck3 \
+    nautilus \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'gnome-system-monitor', '', d)} \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-desktop.bb b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-desktop.bb
new file mode 100644
index 0000000..3c333fe
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-desktop.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Basic GNOME desktop"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit packagegroup features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
+
+RDEPENDS_${PN} = " \
+    adwaita-icon-theme \
+    adwaita-icon-theme-cursors \
+    evolution-data-server \
+    gnome-backgrounds \
+    gnome-bluetooth \
+    gnome-control-center \
+    gnome-desktop3 \
+    gnome-flashback \
+    gnome-keyring \
+    gnome-menus3 \
+    gnome-session \
+    gnome-settings-daemon \
+    gnome-shell \
+    gnome-shell-extensions \
+    gnome-tweaks \
+    gmime \
+    gvfs gvfsd-ftp gvfsd-sftp gvfsd-trash \
+"
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc b/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
index e1afe7f..289288d 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
@@ -37,6 +37,7 @@
 
 OPTFLAGS = "${TUNE_CCARGS} -Os"
 OPTFLAGS_append_toolchain-clang = " -fno-builtin-bcmp"
+OPTFLAGS_append_toolchain-clang_mipsarch = " -no-integrated-as"
 
 PARALLEL_MAKE = ""
 EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.37.0.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.37.0.bb
index 0adc721..6ee02fc 100644
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.37.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.37.0.bb
@@ -37,10 +37,12 @@
        # Remove .la files for loadable modules
        rm -f ${D}/${libdir}/rygel-${LIBV}/engines/*.la
        rm -f ${D}/${libdir}/rygel-${LIBV}/plugins/*.la
-       if [ -e ${D}${libdir}/systemd/user/rygel.service ]; then
+       if [ -e ${D}${nonarch_libdir}/systemd/user/rygel.service ]; then
                mkdir -p ${D}${systemd_unitdir}/system
-               mv ${D}${libdir}/systemd/user/rygel.service ${D}${systemd_unitdir}/system
-               rmdir ${D}${libdir}/systemd/user ${D}${libdir}/systemd
+               mv ${D}${nonarch_libdir}/systemd/user/rygel.service ${D}${systemd_unitdir}/system
+               rmdir --ignore-fail-on-non-empty ${D}${nonarch_libdir}/systemd/user \
+               ${D}${nonarch_libdir}/systemd \
+               ${D}${nonarch_libdir}
        fi
 }
 
diff --git a/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch b/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch
new file mode 100644
index 0000000..cbd76b6
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch
@@ -0,0 +1,46 @@
+From d4a405f87fc215c14e610a25b5a6b14060c1ef15 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 13:53:52 -0800
+Subject: [PATCH] allocate space for buf on heap
+
+Avoids
+| src/epggrab/module/xmltv.c:204:47: error: '%s' directive output may be truncated writing between 2 and 2147483645 bytes into a region of size 115 [-Werror=format-truncation=]
+|   204 |   snprintf(buf, sizeof(buf)-1, "ddprogid://%s/%s", mod->id, s);
+|       |                                               ^~
+
+Upstream-Status: Submitted [https://github.com/tvheadend/tvheadend/pull/1324]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/epggrab/module/xmltv.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c
+index 34ab05bdb..b1a956614 100644
+--- a/src/epggrab/module/xmltv.c
++++ b/src/epggrab/module/xmltv.c
+@@ -197,11 +197,12 @@ static void parse_xmltv_dd_progid
+   (epggrab_module_t *mod, const char *s, char **uri, char **suri,
+    epg_episode_num_t *epnum)
+ {
+-  char buf[128];
+   if (strlen(s) < 2) return;
+ 
++  char* buf = (char *)malloc(strlen(s) + strlen(mod->id) + 13);
++  buf[strlen(s) + strlen(mod->id) + 12] = '\0';
+   /* Raw URI */
+-  snprintf(buf, sizeof(buf)-1, "ddprogid://%s/%s", mod->id, s);
++  snprintf(buf, strlen(s) + strlen(mod->id) + 12, "ddprogid://%s/%s", mod->id, s);
+ 
+   /* SH - series without episode id so ignore */
+   if (strncmp("SH", s, 2))
+@@ -219,6 +220,7 @@ static void parse_xmltv_dd_progid
+       if (buf[e+1]) sscanf(&buf[e+1], "%hu", &(epnum->e_num));
+     }
+   }
++  free(buf);
+ }
+ 
+ /**
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb b/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
index a818a96..20faef0 100644
--- a/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
@@ -10,6 +10,7 @@
 
 SRC_URI = "git://github.com/tvheadend/tvheadend.git \
            file://0001-adjust-for-64bit-time_t.patch \
+           file://0001-allocate-space-for-buf-on-heap.patch \
            "
 
 SRCREV = "fda89e85e0b6ae796d8a09e178d3937aa7869270"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec/0001-define-BASELIB-make-variable.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec/0001-define-BASELIB-make-variable.patch
new file mode 100644
index 0000000..adce802
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec/0001-define-BASELIB-make-variable.patch
@@ -0,0 +1,31 @@
+From 18cc69460d2a0c756880bd54fda36afb0173ea02 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 19:47:36 -0800
+Subject: [PATCH] define BASELIB make variable
+
+This helps to override the default libdir from environment
+
+Upstream-Status: Submitted [https://github.com/foo86/dcadec/pull/61]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index a503698..8f323be 100644
+--- a/Makefile
++++ b/Makefile
+@@ -7,8 +7,9 @@ API_PATCH = 0
+ CFLAGS := -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wall -Wextra -O3 -ffast-math -g -MMD $(CFLAGS)
+ 
+ PREFIX ?= /usr/local
++BASELIB ?= lib
+ BINDIR ?= $(PREFIX)/bin
+-LIBDIR ?= $(PREFIX)/lib
++LIBDIR ?= $(PREFIX)/$(BASELIB)
+ INCLUDEDIR ?= $(PREFIX)/include
+ 
+ SRC_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb
index 45b53c1..1a51abc 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb
@@ -4,14 +4,16 @@
 LIC_FILES_CHKSUM = "file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c"
 
 SRCREV = "b93deed1a231dd6dd7e39b9fe7d2abe05aa00158"
-SRC_URI = "git://github.com/foo86/dcadec.git;protocol=http"
+SRC_URI = "git://github.com/foo86/dcadec.git;protocol=https \
+           file://0001-define-BASELIB-make-variable.patch \
+          "
 
 S = "${WORKDIR}/git"
 
 inherit lib_package
 
-EXTRA_OEMAKE = "CONFIG_SHARED=1"
+EXTRA_OEMAKE = "CONFIG_SHARED=1 PREFIX=${prefix} BASELIB=${baselib}"
 
 do_install() {
-	oe_runmake install DESTDIR="${D}" PREFIX="${prefix}"
+	oe_runmake install DESTDIR="${D}"
 }
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
index 3f49118..f354ef3 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
@@ -11,6 +11,7 @@
           file://0004-Makefile-remove-test.patch \
           file://0005-libucsi-optimization-removal.patch \
           file://0006-CA_SET_PID.patch \
+          file://0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch \
           "
 
 S = "${WORKDIR}/${BPN}"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch
new file mode 100644
index 0000000..9035b56
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch
@@ -0,0 +1,32 @@
+From d6817dbaf407f65dd4af12c51736153fae8b217f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 21 Dec 2019 08:36:11 -0800
+Subject: [PATCH] dvbdate: Remove Obsoleted stime API calls
+
+stime() has been deprecated in glibc 2.31+ its recommended to
+replaced with clock_settime()
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ util/dvbdate/dvbdate.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/util/dvbdate/dvbdate.c b/util/dvbdate/dvbdate.c
+index f0df437..492ed79 100644
+--- a/util/dvbdate/dvbdate.c
++++ b/util/dvbdate/dvbdate.c
+@@ -309,7 +309,10 @@ int atsc_scan_date(time_t *rx_time, unsigned int to)
+  */
+ int set_time(time_t * new_time)
+ {
+-	if (stime(new_time)) {
++	struct timespec ts;
++	ts.tv_sec = &new_time;
++	ts.tv_nsec = 0;
++	if (clock_settime(CLOCK_REALTIME, &ts)) {
+ 		perror("Unable to set time");
+ 		return -1;
+ 	}
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc b/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc
index 764ed37..9ce6506 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc
@@ -4,9 +4,9 @@
 LICENSE = "LGPL-2.1"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=fc178bcd425090939a8b634d1d6a9594"
 
-SRC_URI = "git://github.com/FluidSynth/fluidsynth.git;branch=2.0.x"
-SRCREV = "c2f4683bf57f61451d14d219fdb25cf9f29cb7fe"
+SRC_URI = "git://github.com/FluidSynth/fluidsynth.git"
+SRCREV = "37c9ae2bf431a764032f023b3b2c0c0b86b7c272"
 S = "${WORKDIR}/git"
-PV = "2.0.9"
+PV = "2.1.0"
 
 inherit cmake pkgconfig lib_package
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_0.2.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
similarity index 77%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_0.2.1.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
index 5409f32..d047cae 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_0.2.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
@@ -10,12 +10,14 @@
 
 SRCBRANCH ?= "master"
 
-SRCREV_base = "a60b3996fe3376d42334fc89014e9d6f6af62899"
-SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0"
+PV = "0.6.1"
+
+SRCREV_base = "c41a05cc9e2310c2f73eda4b4f0b4477bf4479c5"
+SRCREV_common = "88e512ca7197a45c4114f7fa993108f23245bf50"
 
 SRC_URI = " \
     git://github.com/RidgeRun/gst-shark.git;protocol=https;branch=${SRCBRANCH};name=base \
-    git://anongit.freedesktop.org/git/gstreamer/common.git;protocol=https;destsuffix=git/common;name=common; \
+    git://gitlab.freedesktop.org/gstreamer/common.git;protocol=https;destsuffix=git/common;name=common; \
     "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-Look-for-gtk-doc.make-in-builddir.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-Look-for-gtk-doc.make-in-builddir.patch
deleted file mode 100644
index 5a28616..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-Look-for-gtk-doc.make-in-builddir.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From a84e9a6e1dca685eda072d58b58556b5b35cb4c8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 10 Sep 2018 21:16:50 -0700
-Subject: [PATCH] Look for gtk-doc.make in builddir
-
-this is evident when S != B because gtkdocize
-generates this file and its actually built into
-build area
-
-Upstream-Status: Submitted [https://github.com/RidgeRun/gstd-1.x/pull/39]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- docs/reference/gstd/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/reference/gstd/Makefile.am b/docs/reference/gstd/Makefile.am
-index f860fa1..62870da 100644
---- a/docs/reference/gstd/Makefile.am
-+++ b/docs/reference/gstd/Makefile.am
-@@ -66,7 +66,7 @@ GTKDOC_LIBS=$(top_builddir)/gstd/libgstd-core.la
- 
- 
- # This includes the standard gtk-doc make rules, copied by gtkdocize.
--include $(top_srcdir)/docs/gtk-doc.make
-+include $(top_builddir)/docs/gtk-doc.make
- 
- # Comment this out if you want 'make check' to test you doc status
- # and run some sanity checks
--- 
-2.18.0
-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch
index ffcc6ea..c1c8899 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch
@@ -7,19 +7,14 @@
  gstd/Makefile.am                | 2 +-
  3 files changed, 9 insertions(+), 3 deletions(-)
 
-diff --git a/gstd/Makefile.am b/gstd/Makefile.am
-index 13c551d..11fe202 100644
 --- a/gstd/Makefile.am
 +++ b/gstd/Makefile.am
-@@ -49,7 +49,7 @@ bin_PROGRAMS = gstd
+@@ -74,7 +74,7 @@ gstd_CFLAGS = $(GST_CFLAGS)					\
+ 	      -DGSTD_LOG_STATE_DIR=\"$(gstdlogstatedir)\"	\
+ 	      -DGSTD_RUN_STATE_DIR=\"$(gstdrunstatedir)\"
  
- gstd_SOURCES = gstd.c
- gstd_CFLAGS = $(GST_CFLAGS) $(GIO_CFLAGS) $(GJSON_CFLAGS)
--gstd_LDFLAGS = $(GST_LIBS) $(GIO_LIBS) $(GJSON_LIBS) -Wl,-rpath -Wl,$(libdir)
-+gstd_LDFLAGS = $(GST_LIBS) $(GIO_LIBS) $(GJSON_LIBS)
+-gstd_LDFLAGS = $(GST_LIBS) $(GIO_LIBS) $(GIO_UNIX_LIBS) $(GJSON_LIBS) $(LIBD_LIBS) -Wl,-rpath -Wl,$(libdir)
++gstd_LDFLAGS = $(GST_LIBS) $(GIO_LIBS) $(GIO_UNIX_LIBS) $(GJSON_LIBS) $(LIBD_LIBS)
  gstd_LDADD = libgstd-core.la
  
  gstdincludedir = $(includedir)/gstd
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb
index 828caa8..1834a83 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb
@@ -5,21 +5,29 @@
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-rtsp-server json-glib libdaemon"
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-rtsp-server json-glib libdaemon jansson"
 
 SRCBRANCH ?= "master"
-SRCREV = "3526d0ffdbccc375db7d5fe33a72c68b134657c2"
+SRCREV = "a6621a5778b234651aa2adbbe304d906a3fa64d1"
 SRC_URI = "git://git@github.com/RidgeRun/gstd-1.x.git;protocol=https;branch=${SRCBRANCH} \
            file://0001-gstd-yocto-compatibility.patch \
-           file://0001-Look-for-gtk-doc.make-in-builddir.patch \
            "
 S = "${WORKDIR}/git"
 
 # Remove the +really when upstream version is > 1.0
-PV = "1.0+really0.6.3"
+PV = "1.0+really0.8.0"
 
 inherit autotools pkgconfig gettext gtk-doc
 
-do_configure_prepend() {
-	sed -i -e "s|include \$(top_builddir)/docs/gtk-doc.make||g" ${S}/docs/reference/gstd/Makefile.am
+do_install_append() {
+        rm -fr ${D}${localstatedir}/run ${D}/run ${D}${bindir}/gst-client ${D}${bindir}/gstd-client
+        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+                install -d ${D}${sysconfdir}/tmpfiles.d
+                echo "d /run/${BPN} - - - -" \
+                > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+                echo "d /${localstatedir}/log/${BPN} 0755 root root -" \
+                >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+        fi
+        ln -sf gst-client-1.0 ${D}${bindir}/gst-client
+        ln -sf gst-client-1.0 ${D}${bindir}/gstd-client
 }
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/nativesdk-projucer_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/nativesdk-projucer_git.bb
deleted file mode 100644
index 7836bae..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/nativesdk-projucer_git.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit nativesdk
-include projucer.inc
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer-native_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer-native_git.bb
deleted file mode 100644
index fb54fb9..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer-native_git.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit native
-include projucer.inc
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc
index 63ed9e9..fc8baa4 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc
@@ -4,23 +4,38 @@
 SECTION = "utils"
 HOMEPAGE = "http://juce.com/"
 LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://README.md;md5=65c50b4ff3522b99436da100536ccd1c"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=a20f91622a47d4e4af9340d5d3f1a2d8"
 
-inherit pkgconfig
+inherit pkgconfig features_check
 
-DEPENDS = "libx11 libxext libxinerama libxrandr libxcursor freetype alsa-lib curl"
+REQUIRED_DISTRO_FEATURES = "x11"
 
-SRCREV = "4f41f28b47d01b939559123d145b4e5860528bb7"
+DEPENDS = "libx11 libxext libxinerama libxrandr libxcursor freetype alsa-lib curl bzip2 libpng harfbuzz glib-2.0 libpcre"
+DEPENDS_append_libc-musl = " libexecinfo"
+
+SRCREV = "724ae27c71ef809b836df06713cf9e50bc14162b"
 BRANCH = "master"
-SRC_URI = "git://github.com/WeAreROLI/JUCE.git;protocol=https;branch=${BRANCH}"
+SRC_URI = "git://github.com/WeAreROLI/JUCE.git;protocol=https;branch=${BRANCH} \
+           file://0001-Disable-webkit-component.patch \
+"
 
 S = "${WORKDIR}/git"
-PV = "5.0.1"
+PV = "5.4.5"
 
 JUCE_PROJUCER_BUILD_PATH = "${B}/extras/Projucer/Builds"
 JUCE_PROJUCER_MAKEFILE_PATH = "${JUCE_PROJUCER_BUILD_PATH}/LinuxMakefile"
 JUCE_PROJUCER = "${JUCE_PROJUCER_MAKEFILE_PATH}/build/Projucer"
 
+# export dummy TARGET_ARCH that doesn't do much,
+# but disables "-march=native" optimization which does
+# not work on cross builds
+EXTRA_OEMAKE = "V=1 JUCE_ARCH_LABEL=${TARGET_ARCH} TARGET_ARCH='-g'"
+
+LDFLAGS_append_mipsarcho32 = " -latomic"
+LDFLAGS_append_powerpc = " -latomic"
+LDFLAGS_append_riscv64 = " -latomic"
+LDFLAGS_append_armv5 = " -latomic"
+
 do_configure() {
   cd ${JUCE_PROJUCER_MAKEFILE_PATH}
   CONFIG=Release oe_runmake clean
@@ -35,3 +50,5 @@
   install -d ${D}${bindir}
   install -m 0755 ${JUCE_PROJUCER} ${D}${bindir}
 }
+# error: '_NL_IDENTIFICATION_LANGUAGE' was not declared in this scope
+COMPATIBLE_HOST_libc-musl = "null"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer/0001-Disable-webkit-component.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer/0001-Disable-webkit-component.patch
new file mode 100644
index 0000000..3728439
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer/0001-Disable-webkit-component.patch
@@ -0,0 +1,83 @@
+From df7190f430f30ee522f56f9714d42ee796f0d5ff Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 2 Dec 2019 22:18:41 -0800
+Subject: [PATCH] Disable webkit component
+
+It asks for enable JUCER_ENABLE_GPL_MODE
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ extras/Projucer/Builds/LinuxMakefile/Makefile | 10 +++++-----
+ extras/Projucer/JuceLibraryCode/AppConfig.h   |  4 ++--
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/extras/Projucer/Builds/LinuxMakefile/Makefile b/extras/Projucer/Builds/LinuxMakefile/Makefile
+index 25b490460..8960f5bc6 100644
+--- a/extras/Projucer/Builds/LinuxMakefile/Makefile
++++ b/extras/Projucer/Builds/LinuxMakefile/Makefile
+@@ -35,13 +35,13 @@ ifeq ($(CONFIG),Debug)
+     TARGET_ARCH := -march=native
+   endif
+ 
+-  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.5 -DJUCE_APP_VERSION_HEX=0x50405 $(shell pkg-config --cflags x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
++  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.5 -DJUCE_APP_VERSION_HEX=0x50405 $(shell pkg-config --cflags x11 xinerama xext freetype2) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
+   JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 -DJucePlugin_Build_Unity=0
+   JUCE_TARGET_APP := Projucer
+ 
+   JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS)
+   JUCE_CXXFLAGS += $(JUCE_CFLAGS) -std=c++11 $(CXXFLAGS)
+-  JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -lrt -ldl -lpthread $(LDFLAGS)
++  JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs x11 xinerama xext freetype2) -lrt -ldl -lpthread $(LDFLAGS)
+ 
+   CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
+ endif
+@@ -56,13 +56,13 @@ ifeq ($(CONFIG),Release)
+     TARGET_ARCH := -march=native
+   endif
+ 
+-  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.5 -DJUCE_APP_VERSION_HEX=0x50405 $(shell pkg-config --cflags x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
++  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.5 -DJUCE_APP_VERSION_HEX=0x50405 $(shell pkg-config --cflags x11 xinerama xext freetype2) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
+   JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 -DJucePlugin_Build_Unity=0
+   JUCE_TARGET_APP := Projucer
+ 
+   JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS)
+   JUCE_CXXFLAGS += $(JUCE_CFLAGS) -std=c++11 $(CXXFLAGS)
+-  JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
++  JUCE_LDFLAGS += $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs x11 xinerama xext freetype2) -fvisibility=hidden -lrt -ldl -lpthread $(LDFLAGS)
+ 
+   CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)
+ endif
+@@ -136,7 +136,7 @@ all : $(JUCE_OUTDIR)/$(JUCE_TARGET_APP)
+ 
+ $(JUCE_OUTDIR)/$(JUCE_TARGET_APP) : $(OBJECTS_APP) $(RESOURCES)
+ 	@command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }
+-	@pkg-config --print-errors x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0
++	@pkg-config --print-errors x11 xinerama xext freetype2
+ 	@echo Linking "Projucer - App"
+ 	-$(V_AT)mkdir -p $(JUCE_BINDIR)
+ 	-$(V_AT)mkdir -p $(JUCE_LIBDIR)
+diff --git a/extras/Projucer/JuceLibraryCode/AppConfig.h b/extras/Projucer/JuceLibraryCode/AppConfig.h
+index dffd5af75..53302bd24 100644
+--- a/extras/Projucer/JuceLibraryCode/AppConfig.h
++++ b/extras/Projucer/JuceLibraryCode/AppConfig.h
+@@ -32,7 +32,7 @@
+ // BEGIN SECTION A

+ 

+ #ifndef JUCER_ENABLE_GPL_MODE

+- #define JUCER_ENABLE_GPL_MODE 0

++ #define JUCER_ENABLE_GPL_MODE 1

+ #endif

+ 

+ // END SECTION A

+@@ -180,7 +180,7 @@
+ // juce_gui_extra flags:

+ 

+ #ifndef    JUCE_WEB_BROWSER

+- //#define JUCE_WEB_BROWSER 1

++ #define JUCE_WEB_BROWSER 0

+ #endif

+ 

+ #ifndef    JUCE_ENABLE_LIVE_CONSTANT_EDITOR

+-- 
+2.24.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer_git.bb
new file mode 100644
index 0000000..f408f6f
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer_git.bb
@@ -0,0 +1,2 @@
+include projucer.inc
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/files/0001-meson-import-python3-to-use-also-from-sysroot.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/files/0001-meson-import-python3-to-use-also-from-sysroot.patch
new file mode 100644
index 0000000..fc56a68
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/files/0001-meson-import-python3-to-use-also-from-sysroot.patch
@@ -0,0 +1,61 @@
+From ea47e53911213d71e997eb34848ae72735bacc82 Mon Sep 17 00:00:00 2001
+From: madhavank27 <madhavan.krishnan@linaro.org>
+Date: Thu, 9 Jan 2020 07:42:18 +0100
+Subject: [PATCH] meson: import python3 to use also from sysroot
+
+importing python module can provide the exact path
+which can be used in desktop build as well as from
+any build system
+
+Upstream-Status: Pending
+Signed-off-by: madhavank27 <madhavan.krishnan@linaro.org>
+---
+ include/libcamera/meson.build | 4 +++-
+ src/libcamera/meson.build     | 4 +++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
+index 99abf06..83525e2 100644
+--- a/include/libcamera/meson.build
++++ b/include/libcamera/meson.build
+@@ -21,13 +21,15 @@ include_dir = join_paths(libcamera_include_dir, 'libcamera')
+ install_headers(libcamera_api,
+                 subdir : include_dir)
+ 
++python_mod = import('python3').find_python()
++
+ gen_controls = files('../../src/libcamera/gen-controls.py')
+ 
+ control_ids_h = custom_target('control_ids_h',
+                               input : files('../../src/libcamera/control_ids.yaml', 'control_ids.h.in'),
+                               output : 'control_ids.h',
+                               depend_files : gen_controls,
+-                              command : [gen_controls, '-o', '@OUTPUT@', '@INPUT@'],
++                              command : [python_mod, gen_controls, '-o', '@OUTPUT@', '@INPUT@'],
+                               install : true,
+                               install_dir : join_paths('include', include_dir))
+ 
+diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
+index c4f965b..243935b 100644
+--- a/src/libcamera/meson.build
++++ b/src/libcamera/meson.build
+@@ -65,13 +65,15 @@ if libudev.found()
+     ])
+ endif
+ 
++python_mod = import('python3').find_python()
++
+ gen_controls = files('gen-controls.py')
+ 
+ control_ids_cpp = custom_target('control_ids_cpp',
+                                 input : files('control_ids.yaml', 'control_ids.cpp.in'),
+                                 output : 'control_ids.cpp',
+                                 depend_files : gen_controls,
+-                                command : [gen_controls, '-o', '@OUTPUT@', '@INPUT@'])
++                                command : [python_mod, gen_controls, '-o', '@OUTPUT@', '@INPUT@'])
+ 
+ libcamera_sources += control_ids_cpp
+ libcamera_sources += control_ids_h
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
new file mode 100644
index 0000000..b95bf6d
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Linux libcamera framework"
+SECTION = "libs"
+
+LICENSE = "GPL-2.0 & LGPL-2.1"
+
+LIC_FILES_CHKSUM = "\
+    file://licenses/gnu-gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://licenses/gnu-lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \
+"
+
+SRC_URI = " \
+        git://linuxtv.org/libcamera.git;protocol=git \
+        file://0001-meson-import-python3-to-use-also-from-sysroot.patch \
+"
+
+SRCREV = "53eab996809e826bc914e4c34c78fe74d86f8dc4"
+
+PV = "201910+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "python3-pyyaml-native udev"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'qt', 'qtbase qtbase-native', '', d)}"
+
+RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland qt', 'qtwayland', '', d)}"
+
+inherit meson pkgconfig python3native
+
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"
+FILES_${PN} += " ${libdir}/libcamera.so"
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb
similarity index 75%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_git.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb
index 3b3ac83..c9ade4a 100755
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb
@@ -11,16 +11,11 @@
             ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'libglu', '', d)} \
 "
 
-PV = "2.2.5+gitr${SRCPV}"
-
-SRCREV = "5e78f51936fd09db0c0f742c7d2c0e5bdbbeed56"
-
-SRC_URI = "git://git.code.sf.net/p/libdc1394/code;branch=master;protocol=git \
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
            file://install_examples.patch \
           "
-
-S = "${WORKDIR}/git/${BPN}"
-
-inherit autotools-brokensep pkgconfig
+SRC_URI[md5sum] = "9fad67bbff08fe2818d5ec81802ec89f"
+SRC_URI[sha256sum] = "2b905fc9aa4eec6bdcf6a2ae5f5ba021232739f5be047dec8fe8dd6049c10fed"
+inherit autotools pkgconfig
 
 EXTRA_OECONF += "--disable-doxygen-doc --disable-examples"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-StringBuffer-Include-cstddef-for-size_t.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-StringBuffer-Include-cstddef-for-size_t.patch
new file mode 100644
index 0000000..1d869aa
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-StringBuffer-Include-cstddef-for-size_t.patch
@@ -0,0 +1,27 @@
+From c14877071f14b218835f7fb034dea11bd1ba56f5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 09:40:16 -0800
+Subject: [PATCH] StringBuffer: Include cstddef for size_t
+
+Fixes
+a.cpp:3:1: error: 'size_t' does not name a type
+    3 | size_t s;
+      | ^~~~~~
+a.cpp:2:1: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
+
+Upstream-Status: Submitted [https://github.com/MusicPlayerDaemon/MPD/pull/697]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util/StringBuffer.hxx | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/src/util/StringBuffer.hxx
++++ b/src/util/StringBuffer.hxx
+@@ -31,6 +31,7 @@
+ #define STRING_BUFFER_HPP
+ 
+ #include <array>
++#include <cstddef>
+ 
+ /**
+  * A statically allocated string buffer.
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0002-Include-stdexcept-for-runtime_error.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0002-Include-stdexcept-for-runtime_error.patch
new file mode 100644
index 0000000..1f11867
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0002-Include-stdexcept-for-runtime_error.patch
@@ -0,0 +1,38 @@
+From 06f78ced45f6622a2e02cd09e6a2c0c22a98b89e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 09:41:55 -0800
+Subject: [PATCH 2/2] Include <stdexcept> for runtime_error
+
+Fixes
+
+../git/src/LocateUri.cxx:65:14: error: 'runtime_error' is not a member of 'std'
+   65 |   throw std::runtime_error("Unsupported URI scheme");
+      |              ^~~~~~~~~~~~~
+
+Upstream-Status: Inappropriate [ Fixed differently upstream ]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/LocateUri.cxx      | 1 +
+ src/pcm/PcmConvert.cxx | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/src/LocateUri.cxx
++++ b/src/LocateUri.cxx
+@@ -17,6 +17,7 @@
+  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+  */
+ 
++#include <stdexcept>
+ #include "config.h"
+ #include "LocateUri.hxx"
+ #include "client/Client.hxx"
+--- a/src/pcm/PcmConvert.cxx
++++ b/src/pcm/PcmConvert.cxx
+@@ -17,6 +17,7 @@
+  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+  */
+ 
++#include <stdexcept>
+ #include "config.h"
+ #include "PcmConvert.hxx"
+ #include "ConfiguredResampler.hxx"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb
index 6c6ad42..133ee6e 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.20.22.bb
@@ -19,6 +19,8 @@
 SRC_URI = " \
     git://github.com/MusicPlayerDaemon/MPD;branch=v0.20.x \
     file://mpd.conf.in \
+    file://0001-StringBuffer-Include-cstddef-for-size_t.patch \
+    file://0002-Include-stdexcept-for-runtime_error.patch \
 "
 SRCREV = "9274bc15bc41bbe490fde847f8422468cc20375d"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb
index 3c7bd89..62d1ad7 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.8.1.bb
@@ -79,7 +79,7 @@
 # Mycroft uses Alsa, PulseAudio and Flac
 RDEPENDS_${PN} += "alsa-utils alsa-plugins alsa-tools"
 RDEPENDS_${PN} += "pulseaudio pulseaudio-misc pulseaudio-server"
-RDEPENDS_${PN} += "flac"
+RDEPENDS_${PN} += "flac mpg123"
 
 # Mycroft can do this itself on the target, but it's quicker to do it here
 RDEPENDS_${PN} += "mimic"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa.bb
index 8b86f82..0620968 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa.bb
@@ -7,7 +7,9 @@
 LIC_FILES_CHKSUM = "file://NOTICE;md5=dbdefe400d894b510a9de14813181d0b"
 
 SRCREV = "8449529c7e50f432091539ba7b438e79b04059b5"
-SRC_URI = "git://github.com/tinyalsa/tinyalsa"
+SRC_URI = "git://github.com/tinyalsa/tinyalsa \
+           file://0001-Use-CMAKE_INSTALL_-path-instead-of-hardcoding-bin-li.patch \
+          "
 PV = "1.1.1+git${SRCPV}"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa/0001-Use-CMAKE_INSTALL_-path-instead-of-hardcoding-bin-li.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa/0001-Use-CMAKE_INSTALL_-path-instead-of-hardcoding-bin-li.patch
new file mode 100644
index 0000000..6f9c399
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/tinyalsa/tinyalsa/0001-Use-CMAKE_INSTALL_-path-instead-of-hardcoding-bin-li.patch
@@ -0,0 +1,46 @@
+From fe4f3c2a37a81201f463ff962364f014f50c9896 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 16 Dec 2019 22:58:41 -0800
+Subject: [PATCH] Use CMAKE_INSTALL_<path> instead of hardcoding bin/lib/
+ install paths
+
+Helps fix build/packaging issues on machines where default libdir is not
+lib but say lib64
+
+Upstream-Status: Submitted [https://github.com/tinyalsa/tinyalsa/pull/143]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index cb31c58..1cc4a85 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -41,12 +41,20 @@ add_util("tinymix" "utils/tinymix.c")
+ install(FILES ${HDRS}
+     DESTINATION "include/tinyalsa")
+ 
++if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
++    set(CMAKE_INSTALL_LIBDIR lib)
++endif()
++
++if(NOT DEFINED CMAKE_INSTALL_BINDIR)
++	set(CMAKE_INSTALL_BINDIR bin)
++endif()
++
+ install(TARGETS "tinyalsa"
+                 "tinyplay"
+                 "tinycap"
+                 "tinymix"
+                 "tinypcminfo"
+-    RUNTIME DESTINATION "bin"
+-    ARCHIVE DESTINATION "lib"
+-    LIBRARY DESTINATION "lib")
++    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools/gettext.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools/gettext.patch
new file mode 100644
index 0000000..b61ce7c
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools/gettext.patch
@@ -0,0 +1,37 @@
+Fix build with gettext 0.20.x
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,8 +2,8 @@
+ 
+ AUTOMAKE_OPTIONS = foreign dist-zip
+ 
+-SUBDIRS = po intl include share debian win32 @OPT_SUBDIRS@
+-DIST_SUBDIRS = po intl include share debian win32 ogg123 oggenc oggdec ogginfo \
++SUBDIRS = po include share debian win32 @OPT_SUBDIRS@
++DIST_SUBDIRS = po include share debian win32 ogg123 oggenc oggdec ogginfo \
+ 	vcut vorbiscomment m4
+ 
+ EXTRA_DIST = config.rpath README AUTHORS COPYING CHANGES vorbis-tools.spec config.h mkinstalldirs
+--- a/configure.ac
++++ b/configure.ac
+@@ -31,7 +31,7 @@ CFLAGS="$cflags_save"
+ AC_PROG_LIBTOOL
+ 
+ ALL_LINGUAS="be cs da en_GB eo es fr hr hu nl pl ro ru sk sv uk vi"
+-AM_GNU_GETTEXT
++AM_GNU_GETTEXT([external])
+ 
+ dnl --------------------------------------------------
+ dnl System checks
+@@ -383,7 +383,6 @@ AC_OUTPUT([
+ Makefile
+ m4/Makefile
+ po/Makefile.in
+-intl/Makefile
+ include/Makefile
+ share/Makefile
+ win32/Makefile
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb
index 8e9914b..89e6652 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb
@@ -13,6 +13,7 @@
 SRC_URI = "http://downloads.xiph.org/releases/vorbis/${BP}.tar.gz \
            file://0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch \
            file://0004-Fix-format-error-blocking-compilation-with-hardening.patch \
+           file://gettext.patch \
           "
 
 SRC_URI[md5sum] = "567e0fb8d321b2cd7124f8208b8b90e6"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.1.bb b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.1.bb
index 96c8bb2..0ea7f6d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.1.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.1.bb
@@ -15,6 +15,7 @@
 SRC_URI[sha256sum] = "f1eab2334e5a1587defa80900901048d14c2e8ffa8c0cff7240bc9937a61dbc3"
 
 EXTRA_OECONF = " \
+    --disable-appindicator \
     --disable-runtime-deps-check \
     --disable-schemas-compile \
 "
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni/0001-Use-GNUInstallDirs-instead-of-hard-coding-paths.patch b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni/0001-Use-GNUInstallDirs-instead-of-hard-coding-paths.patch
new file mode 100644
index 0000000..b78f0b3
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni/0001-Use-GNUInstallDirs-instead-of-hard-coding-paths.patch
@@ -0,0 +1,43 @@
+From c74f04dbab4d586287347b1d5517f36e2f0c3d8e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 15:52:34 -0800
+Subject: [PATCH] Use GNUInstallDirs instead of hard-coding paths
+
+Bump minimum cmake version to be >= 3.1
+
+Upstream-Status: Submitted [https://github.com/mguentner/cannelloni/pull/22]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 51b354f..958e0eb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 2.6)
++cmake_minimum_required(VERSION 3.1)
+ project(cannelloni)
+ 
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
+@@ -60,6 +60,8 @@ set_target_properties ( cannelloni-common
+   SOVERSION 0
+ )
+ 
++include(GNUInstallDirs)
++
+ if(SCTP_SUPPORT)
+     add_library(sctpthread STATIC sctpthread.cpp)
+     target_link_libraries(sctpthread addsources sctp)
+@@ -68,5 +70,5 @@ endif(SCTP_SUPPORT)
+ set_target_properties(addsources PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+ target_link_libraries(cannelloni addsources cannelloni-common pthread)
+ 
+-install(TARGETS cannelloni DESTINATION bin)
+-install(TARGETS cannelloni-common DESTINATION lib)
++install(TARGETS cannelloni DESTINATION ${CMAKE_INSTALL_BINDIR})
++install(TARGETS cannelloni-common DESTINATION ${CMAKE_INSTALL_LIBDIR})
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni/0002-include-missing-stdexcept-for-runtime_error.patch b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni/0002-include-missing-stdexcept-for-runtime_error.patch
new file mode 100644
index 0000000..55f28dd
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni/0002-include-missing-stdexcept-for-runtime_error.patch
@@ -0,0 +1,32 @@
+From 1788762863cd1f657697575f6e73a22e661ccb43 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 10:32:54 -0800
+Subject: [PATCH 2/2] include missing <stdexcept> for runtime_error
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes
+error: ‘runtime_error’ is not a member of ‘std’
+
+Upstream-Status: Submitted [https://github.com/mguentner/cannelloni/pull/22]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ parser.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/parser.cpp b/parser.cpp
+index 4afb9e0..5bcdbde 100644
+--- a/parser.cpp
++++ b/parser.cpp
+@@ -2,6 +2,7 @@
+ 
+ #include <arpa/inet.h>
+ #include <string.h>
++#include <stdexcept>
+ 
+ void parseFrames(uint16_t len, const uint8_t* buffer, std::function<canfd_frame*()> frameAllocator,
+         std::function<void(canfd_frame*, bool)> frameReceiver)
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_git.bb
index df75e63..d4a62bd 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_git.bb
@@ -2,8 +2,11 @@
 HOMEPAGE = "https://github.com/mguentner/cannelloni"
 LICENSE = "GPLv2"
 
-SRC_URI = "git://github.com/mguentner/cannelloni.git;protocol=https"
-SRCREV = "44080bb021d1a143e6906f2ec4610513c4e1cece"
+SRC_URI = "git://github.com/mguentner/cannelloni.git;protocol=https \
+           file://0001-Use-GNUInstallDirs-instead-of-hard-coding-paths.patch \
+           file://0002-include-missing-stdexcept-for-runtime_error.patch \
+          "
+SRCREV = "82aa49b417b96fe46bb3f017ae1bfea928f20f9a"
 
 PV = "20160414+${SRCPV}"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb
index c8fe24c..71368c1 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=6f28fdcba0dda735eed62bac6a397562"
 
-SRCREV = "ce8f6d38a60eb16c996afee1e5340f76ef4d0923"
+SRCREV = "6423faea4800f6cd4055750a7af2da85cdbe4e96"
 PV = "1.11+git${SRCPV}"
 SRC_URI = "git://github.com/civetweb/civetweb.git \
            file://0001-Unittest-Link-librt-and-libm-using-l-option.patch \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.7.2.bb b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.7.2.bb
index 7d80a63..97c7bd6 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.7.2.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.7.2.bb
@@ -66,6 +66,7 @@
 
 FILES_${PN} += "\
     ${PYTHON_SITEPACKAGES_DIR}/firewall \
+    ${nonarch_libdir}/firewalld \
     ${datadir}/dbus-1 \
     ${datadir}/polkit-1 \
     ${datadir}/metainfo \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.3.bb
similarity index 93%
rename from meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.0.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.3.bb
index 105ba10..e230fd0 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.3.bb
@@ -14,8 +14,8 @@
     file://kea-dhcp6.service \
     file://kea-dhcp-ddns.service \
 "
-SRC_URI[md5sum] = "c6406ac3d160161056d2fc36557ebd89"
-SRC_URI[sha256sum] = "173c8e893690a611bc1d1c6fbe54a5c20fcd54429399a8dc3a0d7d2eb01bf8cc"
+SRC_URI[md5sum] = "fda03bf465818009b70dffc226da777d"
+SRC_URI[sha256sum] = "30f82c548b844c12ed46c4eb3880d63b45ec04cecfcf2e4ab1d7bada7fff4f2a"
 
 inherit autotools systemd
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/lftp/files/fix-gcc-6-conflicts-signbit.patch b/meta-openembedded/meta-networking/recipes-connectivity/lftp/files/fix-gcc-6-conflicts-signbit.patch
deleted file mode 100644
index 952232b..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/lftp/files/fix-gcc-6-conflicts-signbit.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- lftp-4.6.3a/src/NetAccess.cc.orig	2016-06-18 10:25:51.063358981 -0400
-+++ lftp-4.6.3a/src/NetAccess.cc	2016-06-18 10:26:04.143359209 -0400
-@@ -21,7 +21,7 @@
- 
- #include <errno.h>
- #include <assert.h>
--#include <math.h>
-+#include <cmath>
- #include <sys/types.h>
- 
- #include "NetAccess.h"
---- lftp-4.6.3a/src/Speedometer.cc.orig	2016-06-18 10:24:58.895358073 -0400
-+++ lftp-4.6.3a/src/Speedometer.cc	2016-06-18 10:25:10.879358281 -0400
-@@ -18,7 +18,7 @@
-  */
- 
- #include <config.h>
--#include <math.h>
-+#include <cmath>
- #include <stdlib.h>
- #include "Speedometer.h"
- #include "misc.h"
---- lftp-4.6.3a/src/FileCopy.cc.orig	2016-06-18 10:24:15.939357325 -0400
-+++ lftp-4.6.3a/src/FileCopy.cc	2016-06-18 10:24:24.583357475 -0400
-@@ -36,7 +36,7 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
--#include <math.h>
-+#include <cmath>
- #include <stddef.h>
- #include "FileCopy.h"
- #include "url.h"
---- lftp-4.6.3a/src/ResMgr.cc.orig	2016-06-18 10:23:31.387356549 -0400
-+++ lftp-4.6.3a/src/ResMgr.cc	2016-06-18 10:23:41.771356729 -0400
-@@ -23,7 +23,7 @@
- #include <ctype.h>
- #include <unistd.h>
- #include <stdlib.h>
--#include <math.h>
-+#include <cmath>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <errno.h>
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.8.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.0.bb
similarity index 81%
rename from meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.8.4.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.0.bb
index bf793d9..ef047f7 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.8.4.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.0.bb
@@ -6,11 +6,9 @@
 LICENSE = "GPLv3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
-SRC_URI = "http://lftp.yar.ru/ftp/lftp-${PV}.tar.bz2 \
-           file://fix-gcc-6-conflicts-signbit.patch \
-          "
-SRC_URI[md5sum] = "a56b5047dbfda052df4c1dfd197aa092"
-SRC_URI[sha256sum] = "a853edbd075b008c315679c7882b6dcc6821ed2365d2ed843a412acd3d40da0e"
+SRC_URI = "http://lftp.yar.ru/ftp/lftp-${PV}.tar.bz2"
+SRC_URI[md5sum] = "b05817a2c26463618271730d0f677edb"
+SRC_URI[sha256sum] = "309e7e91a7c020625715e85c1726b1e7524da22518683fbe051ac13116dedeac"
 
 inherit autotools gettext pkgconfig
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.7.bb b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.8.bb
similarity index 95%
rename from meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.7.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.8.bb
index 340f643..ea533d8 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.7.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.8.bb
@@ -18,8 +18,8 @@
            file://mosquitto.init \
 "
 
-SRC_URI[md5sum] = "ec9074c4f337f64eaa9a4320c6dab020"
-SRC_URI[sha256sum] = "bcd31a8fbbd053fee328986fadd8666d3058357ded56b9782f7d4f19931d178e"
+SRC_URI[md5sum] = "24a0e567c845b3e41b75e237d200edf8"
+SRC_URI[sha256sum] = "7df23c81ca37f0e070574fe74414403cf25183016433d07add6134366fb45df6"
 
 inherit systemd update-rc.d useradd
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.98.bb b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.98.bb
new file mode 100644
index 0000000..860762c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.98.bb
@@ -0,0 +1,58 @@
+SUMMARY = "The network configuration abstraction renderer"
+DESCRIPTION = "Netplan is a utility for easily configuring networking on a \
+linux system. You simply create a YAML description of the required network \
+interfaces and what each should be configured to do. From this description \
+Netplan will generate all the necessary configuration for your chosen renderer \
+tool."
+HOMEPAGE = "https://netplan.io"
+SECTION = "net/misc"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+S = "${WORKDIR}/git"
+SRCREV = "5d22e9d22c4a3724d27b80b0cd9b898ae8f59d2b"
+PV = "0.98+git${SRCPV}"
+
+SRC_URI = " \
+        git://github.com/CanonicalLtd/netplan.git \
+"
+
+DEPENDS = "glib-2.0 libyaml"
+RDEPENDS_${PN} = "python3 python3-core python3-pyyaml python3-netifaces python3-nose python3-coverage python3-pycodestyle python-pyflakes util-linux-libuuid"
+
+inherit pkgconfig systemd
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+EXTRA_OEMAKE = "generate"
+EXTRA_OEMAKE =+ "${@bb.utils.contains('DISTRO_FEATURES','systemd','netplan-dbus dbus/io.netplan.Netplan.service','',d)}"
+
+do_install() {
+	install -d ${D}${sbindir} ${D}${base_libdir}/netplan ${D}${datadir}/netplan/netplan/cli/commands ${D}${sysconfdir}/netplan
+	install -m 755 ${S}/generate ${D}${base_libdir}/netplan/
+	install -m 644 ${S}/netplan/*.py ${D}${datadir}/netplan/netplan
+	install -m 644 ${S}/netplan/cli/*.py ${D}${datadir}/netplan/netplan/cli
+	install -m 644 ${S}/netplan/cli/commands/*.py ${D}${datadir}/netplan/netplan/cli/commands
+	install -m 755 ${S}/src/netplan.script ${D}${datadir}/netplan/
+	ln -srf ${D}${datadir}/netplan/netplan.script ${D}${sbindir}/netplan
+
+	install -d ${D}/${systemd_unitdir}/system ${D}${systemd_unitdir}/system-generators
+	install -m 644 ${S}/src/netplan-wpa@.service ${D}${systemd_unitdir}/system/
+	ln -srf ${D}/${base_libdir}/netplan/generate ${D}${systemd_unitdir}/system-generators
+
+	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+		install -d ${D}${datadir}/dbus-1/system.d ${D}${datadir}/dbus-1/system-services
+		install -m 755 ${S}/netplan-dbus ${D}${base_libdir}/netplan
+		install -m 644 ${S}/dbus/io.netplan.Netplan.conf ${D}${datadir}/dbus-1/system.d
+		install -m 644 ${S}/dbus/io.netplan.Netplan.service ${D}${datadir}/dbus-1/system-services
+	fi
+}
+
+SYSTEMD_SERVICE_${PN} = "netplan-wpa@.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+PACKAGES += "${PN}-dbus"
+
+FILES_${PN} = "${sbindir} ${base_libdir}/netplan/generate ${datadir}/netplan ${sysconfdir}/netplan ${systemd_unitdir}"
+FILES_${PN}-dbus = "${base_libdir}/netplan/netplan-dbus ${datadir}/dbus-1"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf
index a0b87c3..d6bde41 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf
@@ -25,6 +25,10 @@
 
 ## Browsing/Identification ###
 
+# Prevent anonymous connections. Overriden if the user sets guest ok = yes 
+# on any share
+   restrict anonymous = 1
+
 # Change this to the workgroup/NT-domain name your Samba server will part of
    workgroup = WORKGROUP
 
@@ -114,7 +118,7 @@
 
 # This option controls how unsuccessful authentication attempts are mapped
 # to anonymous connections
-   map to guest = bad user
+   map to guest = never
 
 ########## Domains ###########
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.10.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.11.bb
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.10.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.11.bb
index 1ad5d55..ffdc15a 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.10.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.11.bb
@@ -34,8 +34,8 @@
            file://0001-samba-fix-musl-lib-without-innetgr.patch \
           "
 
-SRC_URI[md5sum] = "dde27447f39d124efe18f719ccf956dd"
-SRC_URI[sha256sum] = "700c734b51610e2feaa0d6744f9bec0c0d8917bca8cc78d5b63a4591f32866a5"
+SRC_URI[md5sum] = "eebd021de840312d7e08959e8a3d0ba1"
+SRC_URI[sha256sum] = "609f4232e04c6eaad0e3b8e00cd837683a960ebb95c1fe3349e968d1d1dff894"
 
 UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.10(\.\d+)+).tar.gz"
 
@@ -194,11 +194,11 @@
     
     for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate; do
         if [ -f "${D}${sbindir}/$f" ]; then
-            sed -i -e 's,${PYTHON},/usr/bin/env python3/,g' ${D}${sbindir}/$f
+            sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${sbindir}/$f
         fi
     done
     if [ -f "${D}${bindir}/samba-tool" ]; then
-        sed -i -e 's,${PYTHON},/usr/bin/env python3/,g' ${D}${bindir}/samba-tool
+        sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${bindir}/samba-tool
     fi
     
 }
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_4.2.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_4.3.0.bb
similarity index 93%
rename from meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_4.2.0.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_4.3.0.bb
index 5d8bc9b..a6c8cd0 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_4.2.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_4.3.0.bb
@@ -13,7 +13,7 @@
 RPROVIDES_${PN} = "cyassl"
 
 SRC_URI = "git://github.com/wolfSSL/wolfssl.git;protocol=https"
-SRCREV = "cb7b4af9861ad627faffdc3d24a196c2d11930b8"
+SRCREV = "3f13b49fa318fbd3216d7da36d942e7c276d3413"
 S = "${WORKDIR}/git"
 
 inherit autotools
diff --git a/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool/strncpy-truncation.patch b/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool/strncpy-truncation.patch
new file mode 100644
index 0000000..01e1da8
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool/strncpy-truncation.patch
@@ -0,0 +1,39 @@
+Replace strncpy with memcpy 
+
+since the length of data to 
+be copied has already been determined with strlen(). Replace strncpy()
+with memcpy() to address the warning and optimize the code a little.
+
+| ippool_config.c:112:2: note: 'snprintf' output between 8 and 55 bytes into a destination of size 48
+|   112 |  snprintf(prompt, sizeof(prompt), "ippool-%s", server_name);
+|       |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/cli/cli_readline.c
++++ b/cli/cli_readline.c
+@@ -257,10 +257,15 @@ static void cli_rl_display_wrapped_text(
+ 	int pos;
+ 	int in_ws;
+ 	int i;
++	int bufsize = sizeof(text_buf)/sizeof(text_buf[0]);
+ 
+ 	if (left_margin == 0) {
+ 		left_margin = 3;
+ 	}
++	if (left_margin > bufsize) {
++		left_margin = bufsize;
++	}
++
+ 	if (right_margin == 0) {
+ 		right_margin = 78;;
+ 	}
+@@ -271,7 +276,7 @@ static void cli_rl_display_wrapped_text(
+ 	/* First copy the text heading to the buffer and add a "-", accounting for
+ 	 * the specified left margin.
+ 	 */
+-	strncpy(&text_buf[0], text1, left_margin - 3);
++	memcpy(&text_buf[0], text1, left_margin - 3);
+ 	for (pos = strlen(text1); pos < left_margin - 3; pos++) {
+ 		text_buf[pos] = ' ';
+ 	}
diff --git a/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb b/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb
index 6fa4690..3554e68 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb
@@ -26,6 +26,7 @@
            file://0003-cli-Mark-return-of-strtol-as-long-int.patch \
            file://0002-link-with-libtirpc.patch \
            file://0003-musl-fixes.patch \
+           file://strncpy-truncation.patch \
            "
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4c59283b82fc2b166455e0fc23c71c6f"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.10.bb
similarity index 95%
rename from meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb
rename to meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.10.bb
index efa2bf5..a7eb4c8 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.10.bb
@@ -27,8 +27,8 @@
            file://0001-Add-configure-time-check-for-gettid-API.patch \
            file://0001-create_empty_library-Use-CC-variable-intead-of-hardc.patch \
            "
-SRC_URI[md5sum] = "e9ae9de803a99b7ab33757a49858542f"
-SRC_URI[sha256sum] = "caed672d03ab1fe3f27d333429c7ca03022714e7c6350500208b7bd7349f03ce"
+SRC_URI[md5sum] = "9b61df01d1a092101c4a626692edae19"
+SRC_URI[sha256sum] = "6da9af96e8ee58d11031d305bf4804a00deb6108e12e422722882a2091bd34bd"
 
 inherit autotools useradd systemd pkgconfig
 
diff --git a/meta-openembedded/meta-networking/recipes-devtools/grpc/grpc_1.24.3.bb b/meta-openembedded/meta-networking/recipes-devtools/grpc/grpc_1.24.3.bb
index 24072c0..3cde6f7 100644
--- a/meta-openembedded/meta-networking/recipes-devtools/grpc/grpc_1.24.3.bb
+++ b/meta-openembedded/meta-networking/recipes-devtools/grpc/grpc_1.24.3.bb
@@ -36,6 +36,8 @@
     -DgRPC_INSTALL=ON \
     -DCMAKE_CROSSCOMPILING=ON \
     -DBUILD_SHARED_LIBS=ON \
+    -DgRPC_INSTALL_LIBDIR=${baselib} \
+    -DgRPC_INSTALL_CMAKEDIR=${baselib}/cmake/${BPN} \
     "
 
 do_configure_prepend_mipsarch() {
@@ -48,6 +50,6 @@
 
 BBCLASSEXTEND = "native nativesdk"
 
-SYSROOT_DIRS_BLACKLIST_append_class-target = "${libdir}/cmake/grpc"
+SYSROOT_DIRS_BLACKLIST_append_class-target = "${baselib}/cmake/grpc"
 
 FILES_${PN}-dev += "${bindir}"
diff --git a/meta-openembedded/meta-networking/recipes-extended/corosync/corosync/0001-configure.ac-fix-pkgconfig-issue-of-rdma.patch b/meta-openembedded/meta-networking/recipes-extended/corosync/corosync/0001-configure.ac-fix-pkgconfig-issue-of-rdma.patch
new file mode 100644
index 0000000..bdc7645
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-extended/corosync/corosync/0001-configure.ac-fix-pkgconfig-issue-of-rdma.patch
@@ -0,0 +1,32 @@
+Subject: [PATCH] configure.ac: fix pkgconfig issue of rdma
+
+pkgconfig files from rdma-core(https://github.com/linux-rdma/rdma-core)
+are named start with lib, such as librdmacm.pc and libibverbs.pc. When
+rdma support is enabled, it fails to find rdma related libraries. Update
+configure.ac to the issue.
+
+Upstream-Status: Submitted [https://github.com/corosync/corosync/pull/515]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ac513e93..240cfed4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -459,8 +459,8 @@ if test "x${enable_testagents}" = xyes; then
+ fi
+ 
+ if test "x${enable_rdma}" = xyes; then
+-	PKG_CHECK_MODULES([rdmacm],[rdmacm])
+-	PKG_CHECK_MODULES([ibverbs],[ibverbs])
++	PKG_CHECK_MODULES([rdmacm],[librdmacm])
++	PKG_CHECK_MODULES([ibverbs],[libibverbs])
+ 	AC_DEFINE_UNQUOTED([HAVE_RDMA], 1, [have rdmacm])
+ 	PACKAGE_FEATURES="$PACKAGE_FEATURES rdma"
+ 	WITH_LIST="$WITH_LIST --with rdma"
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-networking/recipes-extended/corosync/corosync_2.4.5.bb b/meta-openembedded/meta-networking/recipes-extended/corosync/corosync_2.4.5.bb
index 1f4a3e1..eefbcca 100644
--- a/meta-openembedded/meta-networking/recipes-extended/corosync/corosync_2.4.5.bb
+++ b/meta-openembedded/meta-networking/recipes-extended/corosync/corosync_2.4.5.bb
@@ -9,6 +9,7 @@
 
 SRC_URI = "http://build.clusterlabs.org/corosync/releases/${BP}.tar.gz \
            file://corosync.conf \
+           file://0001-configure.ac-fix-pkgconfig-issue-of-rdma.patch \
           "
 
 SRC_URI[md5sum] = "e36a056b893c313c4ec1fe0d7e6cdebd"
@@ -36,7 +37,7 @@
 PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
 PACKAGECONFIG[qdevice] = "--enable-qdevices,--disable-qdevices"
 PACKAGECONFIG[qnetd] = "--enable-qnetd,--disable-qnetd"
-PACKAGECONFIG[rdma] = "--enable-rdma,--disable-rdma,librdmacm"
+PACKAGECONFIG[rdma] = "--enable-rdma,--disable-rdma,rdma-core"
 PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp"
 PACKAGECONFIG[systemd] = "--enable-systemd --with-systemddir=${systemd_system_unitdir},--disable-systemd --without-systemddir,systemd"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.0.3.bb b/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.0.bb
similarity index 96%
rename from meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.0.3.bb
rename to meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.0.bb
index 60aae21..115353f 100644
--- a/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.0.3.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://gpl_license.txt;md5=11c7b65c4a4acb9d5175f7e9bf99c403"
 
-SRCREV = "ffcb86c30779df58ee057dfe9a3b078adccc1513"
+SRCREV = "39276d14b659684c4c0612725ab83ea841c6ef99"
 SRC_URI = "git://github.com/arno-iptables-firewall/aif"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-Move-exports-before-symbol-definition.patch b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-Move-exports-before-symbol-definition.patch
deleted file mode 100644
index 699d0d9..0000000
--- a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-Move-exports-before-symbol-definition.patch
+++ /dev/null
@@ -1,294 +0,0 @@
-From 6b76c76e6b3f93c422d666f49ee68df9d5426078 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Wed, 7 Nov 2018 21:19:53 +0000
-Subject: [PATCH] Move exports before symbol definition
-
-Based on 7966020 ("src: Fix exporting symbols with clang"), when
-EXPORT_SYMBOL is located after function definition, clang won't properly
-export the function, resulting in a library with no symbols when built with
-clang.
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
----
- src/flowtable.c | 54 ++++++++++++++++++++++++-------------------------
- 1 file changed, 27 insertions(+), 27 deletions(-)
-
-diff --git a/src/flowtable.c b/src/flowtable.c
-index 1f7ba30..80de952 100644
---- a/src/flowtable.c
-+++ b/src/flowtable.c
-@@ -34,12 +34,13 @@ struct nftnl_flowtable {
- 	uint32_t		flags;
- };
- 
-+EXPORT_SYMBOL(nftnl_flowtable_alloc);
- struct nftnl_flowtable *nftnl_flowtable_alloc(void)
- {
- 	return calloc(1, sizeof(struct nftnl_flowtable));
- }
--EXPORT_SYMBOL(nftnl_flowtable_alloc);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_free);
- void nftnl_flowtable_free(const struct nftnl_flowtable *c)
- {
- 	int i;
-@@ -56,14 +57,14 @@ void nftnl_flowtable_free(const struct nftnl_flowtable *c)
- 	}
- 	xfree(c);
- }
--EXPORT_SYMBOL(nftnl_flowtable_free);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_is_set);
- bool nftnl_flowtable_is_set(const struct nftnl_flowtable *c, uint16_t attr)
- {
- 	return c->flags & (1 << attr);
- }
--EXPORT_SYMBOL(nftnl_flowtable_is_set);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_unset);
- void nftnl_flowtable_unset(struct nftnl_flowtable *c, uint16_t attr)
- {
- 	int i;
-@@ -95,7 +96,6 @@ void nftnl_flowtable_unset(struct nftnl_flowtable *c, uint16_t attr)
- 
- 	c->flags &= ~(1 << attr);
- }
--EXPORT_SYMBOL(nftnl_flowtable_unset);
- 
- static uint32_t nftnl_flowtable_validate[NFTNL_FLOWTABLE_MAX + 1] = {
- 	[NFTNL_FLOWTABLE_HOOKNUM]	= sizeof(uint32_t),
-@@ -104,6 +104,7 @@ static uint32_t nftnl_flowtable_validate[NFTNL_FLOWTABLE_MAX + 1] = {
- 	[NFTNL_FLOWTABLE_FLAGS]		= sizeof(uint32_t),
- };
- 
-+EXPORT_SYMBOL(nftnl_flowtable_set_data);
- int nftnl_flowtable_set_data(struct nftnl_flowtable *c, uint16_t attr,
- 			     const void *data, uint32_t data_len)
- {
-@@ -169,32 +170,32 @@ int nftnl_flowtable_set_data(struct nftnl_flowtable *c, uint16_t attr,
- 	c->flags |= (1 << attr);
- 	return 0;
- }
--EXPORT_SYMBOL(nftnl_flowtable_set_data);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_set);
- void nftnl_flowtable_set(struct nftnl_flowtable *c, uint16_t attr, const void *data)
- {
- 	nftnl_flowtable_set_data(c, attr, data, nftnl_flowtable_validate[attr]);
- }
--EXPORT_SYMBOL(nftnl_flowtable_set);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_set_u32);
- void nftnl_flowtable_set_u32(struct nftnl_flowtable *c, uint16_t attr, uint32_t data)
- {
- 	nftnl_flowtable_set_data(c, attr, &data, sizeof(uint32_t));
- }
--EXPORT_SYMBOL(nftnl_flowtable_set_u32);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_set_s32);
- void nftnl_flowtable_set_s32(struct nftnl_flowtable *c, uint16_t attr, int32_t data)
- {
- 	nftnl_flowtable_set_data(c, attr, &data, sizeof(int32_t));
- }
--EXPORT_SYMBOL(nftnl_flowtable_set_s32);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_set_str);
- int nftnl_flowtable_set_str(struct nftnl_flowtable *c, uint16_t attr, const char *str)
- {
- 	return nftnl_flowtable_set_data(c, attr, str, strlen(str) + 1);
- }
--EXPORT_SYMBOL(nftnl_flowtable_set_str);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_get_data);
- const void *nftnl_flowtable_get_data(const struct nftnl_flowtable *c,
- 				     uint16_t attr, uint32_t *data_len)
- {
-@@ -228,21 +229,21 @@ const void *nftnl_flowtable_get_data(const struct nftnl_flowtable *c,
- 	}
- 	return NULL;
- }
--EXPORT_SYMBOL(nftnl_flowtable_get_data);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_get);
- const void *nftnl_flowtable_get(const struct nftnl_flowtable *c, uint16_t attr)
- {
- 	uint32_t data_len;
- 	return nftnl_flowtable_get_data(c, attr, &data_len);
- }
--EXPORT_SYMBOL(nftnl_flowtable_get);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_get_str);
- const char *nftnl_flowtable_get_str(const struct nftnl_flowtable *c, uint16_t attr)
- {
- 	return nftnl_flowtable_get(c, attr);
- }
--EXPORT_SYMBOL(nftnl_flowtable_get_str);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_get_u32);
- uint32_t nftnl_flowtable_get_u32(const struct nftnl_flowtable *c, uint16_t attr)
- {
- 	uint32_t data_len = 0;
-@@ -252,8 +253,8 @@ uint32_t nftnl_flowtable_get_u32(const struct nftnl_flowtable *c, uint16_t attr)
- 
- 	return val ? *val : 0;
- }
--EXPORT_SYMBOL(nftnl_flowtable_get_u32);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_get_s32);
- int32_t nftnl_flowtable_get_s32(const struct nftnl_flowtable *c, uint16_t attr)
- {
- 	uint32_t data_len = 0;
-@@ -263,8 +264,8 @@ int32_t nftnl_flowtable_get_s32(const struct nftnl_flowtable *c, uint16_t attr)
- 
- 	return val ? *val : 0;
- }
--EXPORT_SYMBOL(nftnl_flowtable_get_s32);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_nlmsg_build_payload);
- void nftnl_flowtable_nlmsg_build_payload(struct nlmsghdr *nlh,
- 					 const struct nftnl_flowtable *c)
- {
-@@ -300,7 +301,6 @@ void nftnl_flowtable_nlmsg_build_payload(struct nlmsghdr *nlh,
- 	if (c->flags & (1 << NFTNL_FLOWTABLE_SIZE))
- 		mnl_attr_put_u32(nlh, NFTA_FLOWTABLE_SIZE, htonl(c->size));
- }
--EXPORT_SYMBOL(nftnl_flowtable_nlmsg_build_payload);
- 
- static int nftnl_flowtable_parse_attr_cb(const struct nlattr *attr, void *data)
- {
-@@ -415,6 +415,7 @@ static int nftnl_flowtable_parse_hook(struct nlattr *attr, struct nftnl_flowtabl
- 	return 0;
- }
- 
-+EXPORT_SYMBOL(nftnl_flowtable_nlmsg_parse);
- int nftnl_flowtable_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_flowtable *c)
- {
- 	struct nlattr *tb[NFTA_FLOWTABLE_MAX + 1] = {};
-@@ -463,7 +464,6 @@ int nftnl_flowtable_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_flowtab
- 
- 	return ret;
- }
--EXPORT_SYMBOL(nftnl_flowtable_nlmsg_parse);
- 
- static const char *nftnl_hooknum2str(int family, int hooknum)
- {
-@@ -516,14 +516,15 @@ static inline int nftnl_str2hooknum(int family, const char *hook)
- 	return -1;
- }
- 
-+EXPORT_SYMBOL(nftnl_flowtable_parse);
- int nftnl_flowtable_parse(struct nftnl_flowtable *c, enum nftnl_parse_type type,
- 			  const char *data, struct nftnl_parse_err *err)
- {
- 	errno = EOPNOTSUPP;
- 	return -1;
- }
--EXPORT_SYMBOL(nftnl_flowtable_parse);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_parse_file);
- int nftnl_flowtable_parse_file(struct nftnl_flowtable *c,
- 			       enum nftnl_parse_type type,
- 			       FILE *fp, struct nftnl_parse_err *err)
-@@ -531,7 +532,6 @@ int nftnl_flowtable_parse_file(struct nftnl_flowtable *c,
- 	errno = EOPNOTSUPP;
- 	return -1;
- }
--EXPORT_SYMBOL(nftnl_flowtable_parse_file);
- 
- static int nftnl_flowtable_snprintf_default(char *buf, size_t size,
- 					    const struct nftnl_flowtable *c)
-@@ -587,6 +587,7 @@ static int nftnl_flowtable_cmd_snprintf(char *buf, size_t size,
- 	return offset;
- }
- 
-+EXPORT_SYMBOL(nftnl_flowtable_snprintf);
- int nftnl_flowtable_snprintf(char *buf, size_t size, const struct nftnl_flowtable *c,
- 			 uint32_t type, uint32_t flags)
- {
-@@ -596,7 +597,6 @@ int nftnl_flowtable_snprintf(char *buf, size_t size, const struct nftnl_flowtabl
- 	return nftnl_flowtable_cmd_snprintf(buf, size, c, nftnl_flag2cmd(flags),
- 					    type, flags);
- }
--EXPORT_SYMBOL(nftnl_flowtable_snprintf);
- 
- static int nftnl_flowtable_do_snprintf(char *buf, size_t size, const void *c,
- 				   uint32_t cmd, uint32_t type, uint32_t flags)
-@@ -604,18 +604,19 @@ static int nftnl_flowtable_do_snprintf(char *buf, size_t size, const void *c,
- 	return nftnl_flowtable_snprintf(buf, size, c, type, flags);
- }
- 
-+EXPORT_SYMBOL(nftnl_flowtable_fprintf);
- int nftnl_flowtable_fprintf(FILE *fp, const struct nftnl_flowtable *c,
- 			    uint32_t type, uint32_t flags)
- {
- 	return nftnl_fprintf(fp, c, NFTNL_CMD_UNSPEC, type, flags,
- 			   nftnl_flowtable_do_snprintf);
- }
--EXPORT_SYMBOL(nftnl_flowtable_fprintf);
- 
- struct nftnl_flowtable_list {
- 	struct list_head list;
- };
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_alloc);
- struct nftnl_flowtable_list *nftnl_flowtable_list_alloc(void)
- {
- 	struct nftnl_flowtable_list *list;
-@@ -628,8 +629,8 @@ struct nftnl_flowtable_list *nftnl_flowtable_list_alloc(void)
- 
- 	return list;
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_alloc);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_free);
- void nftnl_flowtable_list_free(struct nftnl_flowtable_list *list)
- {
- 	struct nftnl_flowtable *s, *tmp;
-@@ -640,34 +641,34 @@ void nftnl_flowtable_list_free(struct nftnl_flowtable_list *list)
- 	}
- 	xfree(list);
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_free);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_is_empty);
- int nftnl_flowtable_list_is_empty(const struct nftnl_flowtable_list *list)
- {
- 	return list_empty(&list->list);
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_is_empty);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_add);
- void nftnl_flowtable_list_add(struct nftnl_flowtable *s,
- 			      struct nftnl_flowtable_list *list)
- {
- 	list_add(&s->head, &list->list);
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_add);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_add_tail);
- void nftnl_flowtable_list_add_tail(struct nftnl_flowtable *s,
- 				   struct nftnl_flowtable_list *list)
- {
- 	list_add_tail(&s->head, &list->list);
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_add_tail);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_del);
- void nftnl_flowtable_list_del(struct nftnl_flowtable *s)
- {
- 	list_del(&s->head);
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_del);
- 
-+EXPORT_SYMBOL(nftnl_flowtable_list_foreach);
- int nftnl_flowtable_list_foreach(struct nftnl_flowtable_list *flowtable_list,
- 				 int (*cb)(struct nftnl_flowtable *t, void *data), void *data)
- {
-@@ -681,4 +682,3 @@ int nftnl_flowtable_list_foreach(struct nftnl_flowtable_list *flowtable_list,
- 	}
- 	return 0;
- }
--EXPORT_SYMBOL(nftnl_flowtable_list_foreach);
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0002-avoid-naming-local-function-as-one-of-printf-family.patch b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0002-avoid-naming-local-function-as-one-of-printf-family.patch
rename to meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch
index e64091b..f49ef2a 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0002-avoid-naming-local-function-as-one-of-printf-family.patch
+++ b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch
@@ -1,6 +1,6 @@
-From 373e13e28e34b4d415fc096e1c7175f4ecfbf0da Mon Sep 17 00:00:00 2001
-From: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
-Date: Wed, 21 Aug 2019 11:18:56 +0900
+From e03b003610a176d608da9a02e433e7ded7e4b75f Mon Sep 17 00:00:00 2001
+From: Todd Cunningham <tcunningham07@gmail.com>
+Date: Wed, 11 Dec 2019 10:18:56 +1000
 Subject: [PATCH] avoid naming local function as one of printf family
 
 Fixes build issues with clang
@@ -10,6 +10,7 @@
 Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
 
 Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
+Signed-off-by: Todd Cunningham <tcunningham07@gmail.com>
 ---
  include/expr_ops.h      | 2 +-
  include/obj.h           | 2 +-
@@ -58,6 +59,7 @@
  src/obj/limit.c         | 2 +-
  src/obj/quota.c         | 2 +-
  src/obj/secmark.c       | 2 +-
+ src/obj/synproxy.c      | 2 +-
  src/obj/tunnel.c        | 2 +-
  src/object.c            | 2 +-
  49 files changed, 50 insertions(+), 50 deletions(-)
@@ -613,6 +615,17 @@
  					 obj);
  		SNPRINTF_BUFFER_SIZE(ret, remain, offset);
  	}
+diff --git a/src/obj/synproxy.c b/src/obj/synproxy.c
+index 56ebc85..6b5380f 100644
+--- a/src/obj/synproxy.c
++++ b/src/obj/synproxy.c
+@@ -157,5 +157,5 @@ struct obj_ops obj_ops_synproxy = {
+ 	.get		= nftnl_obj_synproxy_get,
+ 	.parse		= nftnl_obj_synproxy_parse,
+ 	.build		= nftnl_obj_synproxy_build,
+-	.snprintf	= nftnl_obj_synproxy_snprintf,
++	.snprintf_	= nftnl_obj_synproxy_snprintf,
+ };
 -- 
 2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.4.bb b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.5.bb
similarity index 64%
rename from meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.4.bb
rename to meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.5.bb
index 705b6a6..e1c2720 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.4.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.5.bb
@@ -4,10 +4,9 @@
 SECTION = "libs"
 DEPENDS = "libmnl"
 
-SRCREV = "7c19dc01a88dbcf9a45fa791cd27a51b563bcf29"
+SRCREV = "a71599dc0ae1a808e970e96850ea83d77f452994"
 SRC_URI = "git://git.netfilter.org/libnftnl \
-           file://0001-Move-exports-before-symbol-definition.patch \
-           file://0002-avoid-naming-local-function-as-one-of-printf-family.patch \
+           file://0001-avoid-naming-local-function-as-one-of-printf-family.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/files/0001-update-python3-nftables-reference.patch b/meta-openembedded/meta-networking/recipes-filter/nftables/files/0001-update-python3-nftables-reference.patch
new file mode 100644
index 0000000..db22434
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/files/0001-update-python3-nftables-reference.patch
@@ -0,0 +1,47 @@
+From ddbe652bf0f4ed300bae9497250130d68e4cbf5b Mon Sep 17 00:00:00 2001
+From: Arturo Borrero Gonzalez <arturo@netfilter.org>
+Date: Tue, 10 Dec 2019 12:00:45 +0100
+Subject: py: load the SONAME-versioned shared object
+
+Instruct the python module to load the SONAME versioned shared object.
+
+Normal end-user systems may only have available libnftables.so.1.0.0 and not
+libnftables.so which is usually only present in developer systems.
+
+In Debian systems, for example:
+
+ % dpkg -L libnftables1 | grep so.1
+ /usr/lib/x86_64-linux-gnu/libnftables.so.1.0.0
+ /usr/lib/x86_64-linux-gnu/libnftables.so.1
+
+ % dpkg -L libnftables-dev | grep so
+ /usr/lib/x86_64-linux-gnu/libnftables.so
+
+The "1" is not a magic number, is the SONAME of libnftables in the current
+version, as stated in Make_global.am.
+
+Reported-by: Michael Biebl <biebl@debian.org>
+Signed-off-by: Arturo Borrero Gonzalez <arturo@netfilter.org>
+Acked-by: Phil Sutter <phil@nwl.cc>
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+---
+ py/nftables.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/py/nftables.py b/py/nftables.py
+index 48eb54fe..2a0a1e89 100644
+--- a/py/nftables.py
++++ b/py/nftables.py
+@@ -64,7 +64,7 @@ class Nftables:
+ 
+     validator = None
+ 
+-    def __init__(self, sofile="libnftables.so"):
++    def __init__(self, sofile="libnftables.so.1"):
+         """Instantiate a new Nftables class object.
+ 
+         Accepts a shared object file to open, by default standard search path
+-- 
+cgit v1.2.1
+
+
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.2.bb b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.2.bb
deleted file mode 100644
index 98e8050..0000000
--- a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.2.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Netfilter Tables userspace utillites"
-SECTION = "net"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d1a78fdd879a263a5e0b42d1fc565e79"
-
-DEPENDS = "libmnl libnftnl readline gmp bison-native"
-
-UPSTREAM_CHECK_URI = "https://www.netfilter.org/projects/nftables/files/"
-
-SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2"
-SRC_URI[md5sum] = "dfe130724d7c998eb26b56447e932899"
-SRC_URI[sha256sum] = "5cb66180143e6bfc774f4eb316206d40ac1cb6df269a90882404cbf7165513f5"
-
-inherit autotools manpages pkgconfig
-
-PACKAGECONFIG ?= "python"
-PACKAGECONFIG[man] = "--enable--man-doc, --disable-man-doc"
-PACKAGECONFIG[python] = "--with-python-bin=${PYTHON}, --with-python-bin="", python3"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3native', '', d)}
-
-ASNEEDED = ""
-
-RRECOMMENDS_${PN} += "kernel-module-nf-tables"
-
-PACKAGES =+ "${PN}-python"
-FILES_${PN}-python = "${libdir_native}/${PYTHON_DIR}"
-RDEPENDS_${PN}-python = "python3-core python3-json"
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.3.bb b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.3.bb
new file mode 100644
index 0000000..65a7bcc
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.3.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Netfilter Tables userspace utillites"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d1a78fdd879a263a5e0b42d1fc565e79"
+
+DEPENDS = "libmnl libnftnl bison-native \
+           ${@bb.utils.contains('PACKAGECONFIG', 'mini-gmp', '', 'gmp', d)}"
+
+# Ensure we reject the 0.099 version by matching at least two dots
+UPSTREAM_CHECK_REGEX = "nftables-(?P<pver>\d+(\.\d+){2,}).tar.bz2"
+
+SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2 \
+           file://0001-update-python3-nftables-reference.patch"
+SRC_URI[md5sum] = "9913b2b46864394d41916b74638e0875"
+SRC_URI[sha256sum] = "956b915ce2a7aeaff123e49006be7a0690a0964e96c062703181a36e2e5edb78"
+
+inherit autotools manpages pkgconfig
+
+PACKAGECONFIG ??= "python readline"
+PACKAGECONFIG[json] = "--with-json, --without-json, jansson"
+PACKAGECONFIG[manpages] = "--enable-man-doc, --disable-man-doc, asciidoc-native"
+PACKAGECONFIG[mini-gmp] = "--with-mini-gmp, --without-mini-gmp"
+PACKAGECONFIG[python] = "--enable-python --with-python-bin=${PYTHON}, --with-python-bin="", python3"
+PACKAGECONFIG[readline] = "--with-cli=readline, --without-cli, readline"
+PACKAGECONFIG[xtables] = "--with-xtables, --without-xtables, iptables"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3native', '', d)}
+
+RRECOMMENDS_${PN} += "kernel-module-nf-tables"
+
+PACKAGES =+ "${PN}-python"
+FILES_${PN}-python = "${nonarch_libdir}/${PYTHON_DIR}"
+RDEPENDS_${PN}-python = "python3-core python3-json"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tpd.service b/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tpd.service
index 7b3faf6..d02d0ff 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tpd.service
+++ b/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tpd.service
@@ -5,7 +5,7 @@
 
 [Service]
 Type=forking
-PIDFile=@STATEDIR@/run/openl2tpd.pid
+PIDFile=/run/openl2tpd.pid
 EnvironmentFile=@SYSCONFDIR@/default/openl2tpd
 ExecStartPre=@BASE_BINDIR@/sh -c "@BASE_SBINDIR@/modprobe -sq l2tp_ppp || @BASE_SBINDIR@/modprobe -sq pppol2tp"
 ExecStart=@SBINDIR@/openl2tpd $OPENL2TPDARGS
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb b/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
index 90e8b11..9c0c28e 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
@@ -18,7 +18,7 @@
 
 DEPENDS = "popt flex readline rpcsvc-proto-native bison-native"
 
-SRC_URI = "ftp://ftp.openl2tp.org/releases/${BP}/${BP}.tar.gz \
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz \
            file://Makefile-modify-CFLAGS-to-aviod-build-error.patch \
            file://openl2tp-simplify-gcc-warning-hack.patch \
            file://Makefile-obey-LDFLAGS.patch \
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/0001-dnsmasq-fix-memory-leak-in-helper-c.patch b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/0001-dnsmasq-fix-memory-leak-in-helper-c.patch
new file mode 100644
index 0000000..ccd6f82
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/0001-dnsmasq-fix-memory-leak-in-helper-c.patch
@@ -0,0 +1,49 @@
+From 69bc94779c2f035a9fffdb5327a54c3aeca73ed5 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Wed, 14 Aug 2019 20:44:50 +0100
+Subject: [PATCH] Fix memory leak in helper.c
+
+Thanks to Xu Mingjie <xumingjie1995@outlook.com> for spotting this.
+
+CVE: CVE-2019-14834
+Upstream-Status: Backport
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+---
+ src/helper.c |   12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/src/helper.c b/src/helper.c
+index 33ba120..c392eec 100644
+--- a/src/helper.c
++++ b/src/helper.c
+@@ -82,7 +82,8 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
+   pid_t pid;
+   int i, pipefd[2];
+   struct sigaction sigact;
+-
++  unsigned char *alloc_buff = NULL;
++  
+   /* create the pipe through which the main program sends us commands,
+      then fork our process. */
+   if (pipe(pipefd) == -1 || !fix_fd(pipefd[1]) || (pid = fork()) == -1)
+@@ -188,11 +189,16 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
+       struct script_data data;
+       char *p, *action_str, *hostname = NULL, *domain = NULL;
+       unsigned char *buf = (unsigned char *)daemon->namebuff;
+-      unsigned char *end, *extradata, *alloc_buff = NULL;
++      unsigned char *end, *extradata;
+       int is6, err = 0;
+       int pipeout[2];
+ 
+-      free(alloc_buff);
++      /* Free rarely-allocated memory from previous iteration. */
++      if (alloc_buff)
++	{
++	  free(alloc_buff);
++	  alloc_buff = NULL;
++	}
+       
+       /* we read zero bytes when pipe closed: this is our signal to exit */ 
+       if (!read_write(pipefd[0], (unsigned char *)&data, sizeof(data), 1))
+-- 
+1.7.10.4
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb
index 6f3d5da..8275650 100644
--- a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb
+++ b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb
@@ -5,5 +5,6 @@
 SRC_URI += "\
     file://lua.patch \
     file://0001-dnsmasq-fix-build-against-5.2-headers.patch \
+    file://0001-dnsmasq-fix-memory-leak-in-helper-c.patch \
 "
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.30.bb b/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.30.bb
rename to meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb
index b375ca9..8fb116f 100644
--- a/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.30.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb
@@ -22,8 +22,8 @@
         file://makefile-add-ldflags.patch \
 "
 
-SRC_URI[md5sum] = "97f11b6af1920fde5a9d9eac0d7f9e50"
-SRC_URI[sha256sum] = "95573d70df473c9f63fc4ac496c044c69e3a6de7ccac119922210c0b44cd7a0c"
+SRC_URI[md5sum] = "f6d1707c5baf684b58fd33682d67871f"
+SRC_URI[sha256sum] = "1a0a5e25b5a1226435d2fb76341656f83a710183aebb0d204db39c0ec3bedfdb"
 
 UPSTREAM_CHECK_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/ipvsadm"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.18.bb b/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.18.bb
index 70cea6c..3cabc4f 100644
--- a/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.18.bb
+++ b/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.18.bb
@@ -65,5 +65,6 @@
 
 FILES_${PN}-utils = "${bindir}/*"
 
+RRECOMMENDS_${PN} += "kernel-module-sctp"
 RRECOMMENDS_${PN}-utils += "kernel-module-sctp"
 RRECOMMENDS_${PN}-ptest += "kernel-module-sctp"
diff --git a/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.5.10.bb b/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.5.20.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.5.10.bb
rename to meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.5.20.bb
index d2cafc9..37a77c3 100644
--- a/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.5.10.bb
+++ b/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.5.20.bb
@@ -22,8 +22,8 @@
 SRC_URI = "http://www.memcached.org/files/${BP}.tar.gz \
            file://memcached-add-hugetlbfs-check.patch \
            "
-SRC_URI[md5sum] = "8462616b554183a75845b03c56837cca"
-SRC_URI[sha256sum] = "494c060dbd96d546c74ab85a3cc3984d009b4423767ac33e05dd2340c01f1c4b"
+SRC_URI[md5sum] = "4b64296ea0eeccdee9168c035e0488ab"
+SRC_URI[sha256sum] = "cfd7b023a9cefe7ae8a67184f51d841dbbf97994ed0e8a55e31ee092320ea1e4"
 
 # set the same COMPATIBLE_HOST as libhugetlbfs
 COMPATIBLE_HOST = '(i.86|x86_64|powerpc|powerpc64|arm).*-linux'
diff --git a/meta-openembedded/meta-networking/recipes-support/netcat/netcat/gettext.patch b/meta-openembedded/meta-networking/recipes-support/netcat/netcat/gettext.patch
new file mode 100644
index 0000000..f2e5f99
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/netcat/netcat/gettext.patch
@@ -0,0 +1,16 @@
+Fix build with gettext 0.20.x
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -49,7 +49,7 @@ AC_SUBST(all_libraries)
+ dnl I18n support
+ ALL_LINGUAS="it sk"
+ AM_GNU_GETTEXT([external], need-ngettext)
+-AM_INTL_SUBDIR
++#AM_INTL_SUBDIR
+ 
+ dnl find resolver functions and the socket library on some broken OS
+ AC_LBL_LIBRARY_NET
diff --git a/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb b/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
index d961af5..14d743f 100644
--- a/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
@@ -8,6 +8,7 @@
            file://obsolete_autoconf_macros.patch \
            file://netcat-locale_h.patch \
            file://make-netcat_flag_count_work.patch \
+           file://gettext.patch \
 "
 
 SRC_URI[md5sum] = "0a29eff1736ddb5effd0b1ec1f6fe0ef"
diff --git a/meta-openembedded/meta-networking/recipes-support/netperf/netperf_git.bb b/meta-openembedded/meta-networking/recipes-support/netperf/netperf_git.bb
index 8921ea7..f1f62df 100644
--- a/meta-openembedded/meta-networking/recipes-support/netperf/netperf_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netperf/netperf_git.bb
@@ -31,6 +31,8 @@
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[sctp] = "--enable-sctp,--disable-sctp,lksctp-tools,"
+PACKAGECONFIG[intervals] = "--enable-intervals,--disable-intervals,,"
+PACKAGECONFIG[histogram] = "--enable-histogram,--disable-histogram,,"
 
 # autotools.bbclass attends to include m4 files with path depth <= 2 by
 # "find ${S} -maxdepth 2 -name \*.m4", so move m4 files from m4/m4.
diff --git a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.39.2.bb b/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.40.0.bb
similarity index 89%
rename from meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.39.2.bb
rename to meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.40.0.bb
index c27afdb..f37e9b7 100644
--- a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.39.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.40.0.bb
@@ -11,8 +11,8 @@
     https://github.com/nghttp2/nghttp2/releases/download/v${PV}/nghttp2-${PV}.tar.xz \
     file://0001-fetch-ocsp-response-use-python3.patch \
 "
-SRC_URI[md5sum] = "de52cd6b587b76486346745514972995"
-SRC_URI[sha256sum] = "a2d216450abd2beaf4e200c168957968e89d602ca4119338b9d7ab059fd4ce8b"
+SRC_URI[md5sum] = "8d1a6b96760254e4dd142d7176e8fb7c"
+SRC_URI[sha256sum] = "09fc43d428ff237138733c737b29fb1a7e49d49de06d2edbed3bc4cdcee69073"
 
 inherit cmake manpages pythonnative
 PACKAGECONFIG[manpages] = ""
diff --git a/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf b/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf
index 676e186..b590030 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf
+++ b/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf
@@ -14,4 +14,8 @@
 server 127.127.1.0
 fudge 127.127.1.0 stratum 14
 # Defining a default security setting
-restrict default
+restrict -4 default notrap nomodify nopeer noquery
+restrict -6 default notrap nomodify nopeer noquery
+
+restrict 127.0.0.1    # allow local host
+restrict ::1          # allow local host
diff --git a/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p13.bb b/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p13.bb
index 9b327ba..e950fab 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p13.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p13.bb
@@ -105,7 +105,7 @@
     rmdir --ignore-fail-on-non-empty ${D}${libexecdir}
 }
 
-PACKAGES += "ntpdate sntp ntpq ${PN}-tickadj ${PN}-utils"
+PACKAGES += "ntpdate sntp ntpdc ntpq ${PN}-tickadj ${PN}-utils"
 # NOTE: you don't need ntpdate, use "ntpd -q -g -x"
 
 # ntp originally includes tickadj. It's split off for inclusion in small firmware images on platforms
@@ -117,8 +117,8 @@
 RPROVIDES_${PN}-utils = "${PN}-bin"
 RREPLACES_${PN}-utils = "${PN}-bin"
 RCONFLICTS_${PN}-utils = "${PN}-bin"
-# ntpq was split out of ntp-utils
-RDEPENDS_${PN}-utils = "ntpq"
+# ntpdc and ntpq were split out of ntp-utils
+RDEPENDS_${PN}-utils = "ntpdc ntpq"
 
 SYSTEMD_PACKAGES = "${PN} ntpdate sntp"
 SYSTEMD_SERVICE_${PN} = "ntpd.service"
@@ -153,6 +153,7 @@
               ${sysconfdir}/default/sntp \
               ${systemd_unitdir}/system/sntp.service \
              "
+FILES_ntpdc = "${sbindir}/ntpdc"
 FILES_ntpq = "${sbindir}/ntpq"
 
 CONFFILES_${PN} = "${sysconfdir}/ntp.conf"
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-Remove-man-files-which-cant-be-built.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-Remove-man-files-which-cant-be-built.patch
index 4b59561..f1437a0 100644
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-Remove-man-files-which-cant-be-built.patch
+++ b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-Remove-man-files-which-cant-be-built.patch
@@ -14,14 +14,67 @@
 |   cmake_install.cmake:48 (include)
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libibumad/man/CMakeLists.txt      |  1 -
- libibverbs/man/CMakeLists.txt     | 15 ---------------
- providers/mlx5/man/CMakeLists.txt |  1 -
- 3 files changed, 17 deletions(-)
 
+Update for version 26.1. Remove more man files which can no be built.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ infiniband-diags/man/CMakeLists.txt | 34 -------------------
+ libibumad/man/CMakeLists.txt        |  2 --
+ libibverbs/man/CMakeLists.txt       | 52 -----------------------------
+ librdmacm/man/CMakeLists.txt        |  2 --
+ providers/efa/man/CMakeLists.txt    |  2 --
+ providers/mlx4/man/CMakeLists.txt   |  1 -
+ providers/mlx5/man/CMakeLists.txt   | 65 -------------------------------------
+ 7 files changed, 158 deletions(-)
+
+diff --git a/infiniband-diags/man/CMakeLists.txt b/infiniband-diags/man/CMakeLists.txt
+index 1f1f91c9..094a389f 100644
+--- a/infiniband-diags/man/CMakeLists.txt
++++ b/infiniband-diags/man/CMakeLists.txt
+@@ -46,40 +46,6 @@ rdma_rst_common(
+ )
+ 
+ rdma_man_pages(
+-  check_lft_balance.8.in.rst
+-  dump_fts.8.in.rst
+-  ibaddr.8.in.rst
+-  ibcacheedit.8.in.rst
+-  ibccconfig.8.in.rst
+-  ibccquery.8.in.rst
+-  ibfindnodesusing.8.in.rst
+-  ibhosts.8.in.rst
+-  ibidsverify.8.in.rst
+-  iblinkinfo.8.in.rst
+-  ibnetdiscover.8.in.rst
+-  ibnodes.8.in.rst
+-  ibping.8.in.rst
+-  ibportstate.8.in.rst
+-  ibqueryerrors.8.in.rst
+-  ibroute.8.in.rst
+-  ibrouters.8.in.rst
+-  ibstat.8.in.rst
+-  ibstatus.8.in.rst
+-  ibswitches.8.in.rst
+-  ibsysstat.8.in.rst
+-  ibtracert.8.in.rst
+-  infiniband-diags.8.in.rst
+-  perfquery.8.in.rst
+-  saquery.8.in.rst
+-  sminfo.8.in.rst
+-  smpdump.8.in.rst
+-  smpquery.8.in.rst
+-  vendstat.8.in.rst
+-  )
+-
+-rdma_alias_man_pages(
+-  dump_fts.8 dump_lfts.8
+-  dump_fts.8 dump_mfts.8
+   )
+ 
+ if (ENABLE_IBDIAGS_COMPAT)
 diff --git a/libibumad/man/CMakeLists.txt b/libibumad/man/CMakeLists.txt
-index 185584a0..ac45a4e9 100644
+index 185584a0..857a4b8b 100644
 --- a/libibumad/man/CMakeLists.txt
 +++ b/libibumad/man/CMakeLists.txt
 @@ -15,7 +15,6 @@ rdma_man_pages(
@@ -32,19 +85,34 @@
    umad_open_port.3
    umad_poll.3
    umad_recv.3
+@@ -38,5 +37,4 @@ rdma_alias_man_pages(
+   umad_class_str.3 umad_method_str.3
+   umad_get_ca.3 umad_release_ca.3
+   umad_get_port.3 umad_release_port.3
+-  umad_init.3 umad_done.3
+   )
 diff --git a/libibverbs/man/CMakeLists.txt b/libibverbs/man/CMakeLists.txt
-index 86dd49de..b54675be 100644
+index e1d5edf8..92c68611 100644
 --- a/libibverbs/man/CMakeLists.txt
 +++ b/libibverbs/man/CMakeLists.txt
-@@ -5,7 +5,6 @@ rdma_man_pages(
+@@ -1,24 +1,18 @@
+ rdma_man_pages(
+-  ibv_advise_mr.3.md
+   ibv_alloc_dm.3
+   ibv_alloc_mw.3
+-  ibv_alloc_null_mr.3.md
+   ibv_alloc_parent_domain.3
    ibv_alloc_pd.3
    ibv_alloc_td.3
    ibv_asyncwatch.1
+-  ibv_attach_counters_point_flow.3.md
 -  ibv_attach_mcast.3.md
    ibv_bind_mw.3
    ibv_create_ah.3
    ibv_create_ah_from_wc.3
-@@ -14,7 +13,6 @@ rdma_man_pages(
+   ibv_create_comp_channel.3
+-  ibv_create_counters.3.md
+   ibv_create_cq.3
    ibv_create_cq_ex.3
    ibv_modify_cq.3
    ibv_create_flow.3
@@ -52,7 +120,7 @@
    ibv_create_qp.3
    ibv_create_qp_ex.3
    ibv_create_rwq_ind_table.3
-@@ -23,15 +21,9 @@ rdma_man_pages(
+@@ -27,16 +21,8 @@ rdma_man_pages(
    ibv_create_wq.3
    ibv_devices.1
    ibv_devinfo.1
@@ -61,14 +129,15 @@
    ibv_get_async_event.3
    ibv_get_cq_event.3
 -  ibv_get_device_guid.3.md
-   ibv_get_device_list.3
+-  ibv_get_device_list.3.md
 -  ibv_get_device_name.3.md
+-  ibv_get_pkey_index.3.md
 -  ibv_get_srq_num.3.md
 -  ibv_inc_rkey.3.md
    ibv_modify_qp.3
    ibv_modify_qp_rate_limit.3
    ibv_modify_srq.3
-@@ -46,19 +38,12 @@ rdma_man_pages(
+@@ -51,24 +37,15 @@ rdma_man_pages(
    ibv_post_srq_recv.3
    ibv_query_device.3
    ibv_query_device_ex.3
@@ -81,6 +150,7 @@
 -  ibv_rate_to_mbps.3.md
 -  ibv_rate_to_mult.3.md
    ibv_rc_pingpong.1
+-  ibv_read_counters.3.md
    ibv_reg_mr.3
 -  ibv_req_notify_cq.3.md
 -  ibv_rereg_mr.3.md
@@ -88,16 +158,175 @@
    ibv_srq_pingpong.1
    ibv_uc_pingpong.1
    ibv_ud_pingpong.1
+-  ibv_wr_post.3.md
+   ibv_xsrq_pingpong.1
+   )
+ rdma_alias_man_pages(
+@@ -79,47 +56,18 @@ rdma_alias_man_pages(
+   ibv_alloc_mw.3 ibv_dealloc_mw.3
+   ibv_alloc_pd.3 ibv_dealloc_pd.3
+   ibv_alloc_td.3 ibv_dealloc_td.3
+-  ibv_attach_mcast.3 ibv_detach_mcast.3
+   ibv_create_ah.3 ibv_destroy_ah.3
+   ibv_create_ah_from_wc.3 ibv_init_ah_from_wc.3
+   ibv_create_comp_channel.3 ibv_destroy_comp_channel.3
+-  ibv_create_counters.3 ibv_destroy_counters.3
+   ibv_create_cq.3 ibv_destroy_cq.3
+   ibv_create_flow.3 ibv_destroy_flow.3
+-  ibv_create_flow_action.3 ibv_destroy_flow_action.3
+-  ibv_create_flow_action.3 ibv_modify_flow_action.3
+   ibv_create_qp.3 ibv_destroy_qp.3
+   ibv_create_rwq_ind_table.3 ibv_destroy_rwq_ind_table.3
+   ibv_create_srq.3 ibv_destroy_srq.3
+   ibv_create_wq.3 ibv_destroy_wq.3
+-  ibv_event_type_str.3 ibv_node_type_str.3
+-  ibv_event_type_str.3 ibv_port_state_str.3
+   ibv_get_async_event.3 ibv_ack_async_event.3
+   ibv_get_cq_event.3 ibv_ack_cq_events.3
+-  ibv_get_device_list.3 ibv_free_device_list.3
+   ibv_open_device.3 ibv_close_device.3
+   ibv_open_xrcd.3 ibv_close_xrcd.3
+-  ibv_rate_to_mbps.3 mbps_to_ibv_rate.3
+-  ibv_rate_to_mult.3 mult_to_ibv_rate.3
+   ibv_reg_mr.3 ibv_dereg_mr.3
+-  ibv_wr_post.3 ibv_wr_abort.3
+-  ibv_wr_post.3 ibv_wr_complete.3
+-  ibv_wr_post.3 ibv_wr_start.3
+-  ibv_wr_post.3 ibv_wr_atomic_cmp_swp.3
+-  ibv_wr_post.3 ibv_wr_atomic_fetch_add.3
+-  ibv_wr_post.3 ibv_wr_bind_mw.3
+-  ibv_wr_post.3 ibv_wr_local_inv.3
+-  ibv_wr_post.3 ibv_wr_rdma_read.3
+-  ibv_wr_post.3 ibv_wr_rdma_write.3
+-  ibv_wr_post.3 ibv_wr_rdma_write_imm.3
+-  ibv_wr_post.3 ibv_wr_send.3
+-  ibv_wr_post.3 ibv_wr_send_imm.3
+-  ibv_wr_post.3 ibv_wr_send_inv.3
+-  ibv_wr_post.3 ibv_wr_send_tso.3
+-  ibv_wr_post.3 ibv_wr_set_inline_data.3
+-  ibv_wr_post.3 ibv_wr_set_inline_data_list.3
+-  ibv_wr_post.3 ibv_wr_set_sge.3
+-  ibv_wr_post.3 ibv_wr_set_sge_list.3
+-  ibv_wr_post.3 ibv_wr_set_ud_addr.3
+-  ibv_wr_post.3 ibv_wr_set_xrc_srqn.3
+   )
+diff --git a/librdmacm/man/CMakeLists.txt b/librdmacm/man/CMakeLists.txt
+index 2d1efbff..d016c926 100644
+--- a/librdmacm/man/CMakeLists.txt
++++ b/librdmacm/man/CMakeLists.txt
+@@ -20,7 +20,6 @@ rdma_man_pages(
+   rdma_destroy_qp.3
+   rdma_destroy_srq.3
+   rdma_disconnect.3
+-  rdma_establish.3.md
+   rdma_event_str.3
+   rdma_free_devices.3
+   rdma_get_cm_event.3
+@@ -33,7 +32,6 @@ rdma_man_pages(
+   rdma_get_send_comp.3
+   rdma_get_src_port.3
+   rdma_getaddrinfo.3
+-  rdma_init_qp_attr.3.md
+   rdma_join_multicast.3
+   rdma_join_multicast_ex.3
+   rdma_leave_multicast.3
+diff --git a/providers/efa/man/CMakeLists.txt b/providers/efa/man/CMakeLists.txt
+index d6a4f57b..376f293d 100644
+--- a/providers/efa/man/CMakeLists.txt
++++ b/providers/efa/man/CMakeLists.txt
+@@ -1,4 +1,2 @@
+ rdma_man_pages(
+-  efadv_create_driver_qp.3.md
+-  efadv.7.md
+ )
+diff --git a/providers/mlx4/man/CMakeLists.txt b/providers/mlx4/man/CMakeLists.txt
+index 3df77caf..99a75101 100644
+--- a/providers/mlx4/man/CMakeLists.txt
++++ b/providers/mlx4/man/CMakeLists.txt
+@@ -1,6 +1,5 @@
+ rdma_man_pages(
+   mlx4dv_init_obj.3
+   mlx4dv_query_device.3
+-  mlx4dv_set_context_attr.3.md
+   mlx4dv.7
+ )
 diff --git a/providers/mlx5/man/CMakeLists.txt b/providers/mlx5/man/CMakeLists.txt
-index cdc7115e..876b6fcf 100644
+index 0bd9eba1..876b6fcf 100644
 --- a/providers/mlx5/man/CMakeLists.txt
 +++ b/providers/mlx5/man/CMakeLists.txt
-@@ -1,5 +1,4 @@
+@@ -1,72 +1,7 @@
  rdma_man_pages(
+-  mlx5dv_alloc_dm.3.md
+-  mlx5dv_create_cq.3.md
+-  mlx5dv_create_flow.3.md
+-  mlx5dv_create_flow_action_modify_header.3.md
+-  mlx5dv_create_flow_action_packet_reformat.3.md
+-  mlx5dv_create_flow_matcher.3.md
+-  mlx5dv_create_mkey.3.md
+-  mlx5dv_create_qp.3.md
+-  mlx5dv_devx_alloc_uar.3.md
+-  mlx5dv_devx_create_cmd_comp.3.md
+-  mlx5dv_devx_create_event_channel.3.md
+-  mlx5dv_devx_get_event.3.md
+-  mlx5dv_devx_obj_create.3.md
+-  mlx5dv_devx_qp_modify.3.md
+-  mlx5dv_devx_query_eqn.3.md
+-  mlx5dv_devx_subscribe_devx_event.3.md
+-  mlx5dv_devx_umem_reg.3.md
+-  mlx5dv_dr_flow.3.md
 -  mlx5dv_flow_action_esp.3.md
    mlx5dv_get_clock_info.3
    mlx5dv_init_obj.3
+-  mlx5dv_is_supported.3.md
+-  mlx5dv_open_device.3.md
    mlx5dv_query_device.3
+   mlx5dv_ts_to_ns.3
+-  mlx5dv_wr_post.3.md
+   mlx5dv.7
+ )
+-rdma_alias_man_pages(
+- mlx5dv_create_mkey.3 mlx5dv_destroy_mkey.3
+- mlx5dv_devx_alloc_uar.3 mlx5dv_devx_free_uar.3
+- mlx5dv_devx_create_cmd_comp.3 mlx5dv_devx_destroy_cmd_comp.3
+- mlx5dv_devx_create_event_channel.3 mlx5dv_devx_destroy_event_channel.3
+- mlx5dv_devx_create_cmd_comp.3 mlx5dv_devx_get_async_cmd_comp.3
+- mlx5dv_devx_obj_create.3 mlx5dv_devx_general_cmd.3
+- mlx5dv_devx_obj_create.3 mlx5dv_devx_obj_destroy.3
+- mlx5dv_devx_obj_create.3 mlx5dv_devx_obj_query.3
+- mlx5dv_devx_obj_create.3 mlx5dv_devx_obj_query_async.3
+- mlx5dv_devx_obj_create.3 mlx5dv_devx_obj_modify.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_qp_query.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_cq_modify.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_cq_query.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_wq_modify.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_wq_query.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_srq_modify.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_srq_query.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_ind_tbl_modify.3
+- mlx5dv_devx_qp_modify.3 mlx5dv_devx_ind_tbl_query.3
+- mlx5dv_devx_subscribe_devx_event.3 mlx5dv_devx_subscribe_devx_event_fd.3
+- mlx5dv_devx_umem_reg.3 mlx5dv_devx_umem_dereg.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_dest_table.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_dest_ibv_qp.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_dest_vport.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_flow_counter.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_drop.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_modify_header.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_packet_reformat.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_create_tag.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_action_destroy.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_domain_create.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_domain_destroy.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_domain_sync.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_matcher_create.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_matcher_destroy.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_rule_create.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_rule_destroy.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_table_create.3
+- mlx5dv_dr_flow.3 mlx5dv_dr_table_destroy.3
+- mlx5dv_wr_post.3 mlx5dv_wr_set_dc_addr.3
+- mlx5dv_wr_post.3 mlx5dv_qp_ex_from_ibv_qp_ex.3
+-)
 -- 
 2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-S_IFSOCK-is-defined-in-both-glibc-musl.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-S_IFSOCK-is-defined-in-both-glibc-musl.patch
deleted file mode 100644
index b04c9b7..0000000
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-S_IFSOCK-is-defined-in-both-glibc-musl.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From f2df1db11f3a9580774300e703b6f53dbcdb28ef Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 8 Jun 2018 20:17:57 -0700
-Subject: [PATCH] S_IFSOCK is defined in both glibc/musl
-
-Fixes
-
-preload.c:1183:46: error: '__S_IFSOCK' undeclared (first use in this function); did you mean 'S_IFSOCK'?
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- librdmacm/preload.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/librdmacm/preload.c b/librdmacm/preload.c
-index 0f2aa250..d46beb1b 100644
---- a/librdmacm/preload.c
-+++ b/librdmacm/preload.c
-@@ -1180,7 +1180,7 @@ int __fxstat(int ver, int socket, struct stat *buf)
- 	if (fd_get(socket, &fd) == fd_rsocket) {
- 		ret = real.fxstat(ver, socket, buf);
- 		if (!ret)
--			buf->st_mode = (buf->st_mode & ~S_IFMT) | __S_IFSOCK;
-+			buf->st_mode = (buf->st_mode & ~S_IFMT) | S_IFSOCK;
- 	} else {
- 		ret = real.fxstat(ver, fd, buf);
- 	}
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-include-endian.h-for-htole32-and-friends.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-include-endian.h-for-htole32-and-friends.patch
deleted file mode 100644
index aa33524..0000000
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-include-endian.h-for-htole32-and-friends.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 65b9a47c07be4611b4fbbcafff1993186bcb0537 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 12 Jun 2018 19:15:52 -0700
-Subject: [PATCH 1/2] include endian.h for htole32 and friends
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- providers/hns/hns_roce_u.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h
-index bd66c6e7..b07424db 100644
---- a/providers/hns/hns_roce_u.h
-+++ b/providers/hns/hns_roce_u.h
-@@ -34,6 +34,7 @@
- #define _HNS_ROCE_U_H
- 
- #include <stddef.h>
-+#include <endian.h>
- #include <util/compiler.h>
- 
- #include <infiniband/driver.h>
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-librdmacm-Use-sched_yield-instead-of-pthread_yield.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-librdmacm-Use-sched_yield-instead-of-pthread_yield.patch
new file mode 100644
index 0000000..80abd33
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-librdmacm-Use-sched_yield-instead-of-pthread_yield.patch
@@ -0,0 +1,30 @@
+From 6ac9562d756d42592994aeaac7a5e7b2bbce5cab Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 14 Dec 2019 14:07:57 -0800
+Subject: [PATCH] librdmacm: Use sched_yield instead of pthread_yield
+
+glibc redirects pthread_yield to sched_yield additionally we get it
+working with musl on linux
+
+Upstream-Status: Submitted [https://github.com/linux-rdma/rdma-core/pull/635]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ librdmacm/rsocket.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/librdmacm/rsocket.c b/librdmacm/rsocket.c
+index 89ae2139..7fc5b266 100644
+--- a/librdmacm/rsocket.c
++++ b/librdmacm/rsocket.c
+@@ -3038,7 +3038,7 @@ static int rs_poll_enter(void)
+ 	pthread_mutex_lock(&mut);
+ 	if (suspendpoll) {
+ 		pthread_mutex_unlock(&mut);
+-		pthread_yield();
++		sched_yield();
+ 		return -EBUSY;
+ 	}
+ 
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0002-Remove-unused-include-for-execinfo.h.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0002-Remove-unused-include-for-execinfo.h.patch
deleted file mode 100644
index 347f964..0000000
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0002-Remove-unused-include-for-execinfo.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 3d9cae15c69c0b3260a024ad5d6802a8d85515a2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 12 Jun 2018 19:18:24 -0700
-Subject: [PATCH 2/2] Remove unused include for execinfo.h
-
-Fixes build on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- providers/qedr/qelr_verbs.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/providers/qedr/qelr_verbs.c b/providers/qedr/qelr_verbs.c
-index e3b01f28..2ee1c832 100644
---- a/providers/qedr/qelr_verbs.c
-+++ b/providers/qedr/qelr_verbs.c
-@@ -54,7 +54,6 @@
- 
- #include <stdio.h>
- #include <stdlib.h>
--#include <execinfo.h>
- 
- #define QELR_SQE_ELEMENT_SIZE	(sizeof(struct rdma_sq_sge))
- #define QELR_RQE_ELEMENT_SIZE	(sizeof(struct rdma_rq_sge))
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0002-neigh.c-Do-not-include-net-if_packet.h.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0002-neigh.c-Do-not-include-net-if_packet.h.patch
deleted file mode 100644
index e887f22..0000000
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0002-neigh.c-Do-not-include-net-if_packet.h.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 82486f7e1ee2aa07a5c12cb357834993aa8c1d20 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 8 Jun 2018 20:19:13 -0700
-Subject: [PATCH] neigh.c: Do not include net/if_packet.h
-
-This header is glibc specific
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libibverbs/neigh.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/libibverbs/neigh.c b/libibverbs/neigh.c
-index 21177db0..cfc593a0 100644
---- a/libibverbs/neigh.c
-+++ b/libibverbs/neigh.c
-@@ -2,7 +2,6 @@
-  */
- 
- #include "config.h"
--#include <net/if_packet.h>
- #include <linux/netlink.h>
- #include <linux/rtnetlink.h>
- #include <endian.h>
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_18.1.bb b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_18.1.bb
deleted file mode 100644
index 6ad864d..0000000
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_18.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Userspace support for InfiniBand/RDMA verbs"
-DESCRIPTION = "This is the userspace components for the Linux Kernel's drivers Infiniband/RDMA subsystem."
-SECTION = "libs"
-
-DEPENDS = "libnl"
-RDEPENDS_${PN} = "bash perl"
-
-SRC_URI = "git://github.com/linux-rdma/rdma-core.git;branch=stable-v18 \
-           file://0001-S_IFSOCK-is-defined-in-both-glibc-musl.patch \
-           file://0002-neigh.c-Do-not-include-net-if_packet.h.patch \
-           file://0001-include-endian.h-for-htole32-and-friends.patch \
-           file://0002-Remove-unused-include-for-execinfo.h.patch \
-           file://0001-Remove-man-files-which-cant-be-built.patch \
-           "
-SRCREV = "7844b3fbe5120623d63b29ecb43eb83a61129658"
-S = "${WORKDIR}/git"
-
-#Default Dual License https://github.com/linux-rdma/rdma-core/blob/master/COPYING.md
-LICENSE = "BSD-2-Clause | GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING.BSD_FB;md5=0ec18bae1a9df92c8d6ae01f94a289ae \
-		   file://COPYING.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-
-FILES_SOLIBSDEV = ""
-FILES_${PN} += "${libdir}/*"
-INSANE_SKIP_${PN} += "dev-so"
-
-inherit cmake
-
-OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_27.0.bb b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_27.0.bb
new file mode 100644
index 0000000..361d69b
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_27.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Userspace support for InfiniBand/RDMA verbs"
+DESCRIPTION = "This is the userspace components for the Linux Kernel's drivers Infiniband/RDMA subsystem."
+SECTION = "libs"
+
+DEPENDS = "libnl"
+RDEPENDS_${PN} = "bash perl"
+
+BRANCH = "stable-v${@d.getVar('PV').split('.')[0]}"
+SRC_URI = "git://github.com/linux-rdma/rdma-core.git;branch=${BRANCH} \
+           file://0001-Remove-man-files-which-cant-be-built.patch \
+           file://0001-librdmacm-Use-sched_yield-instead-of-pthread_yield.patch \
+           "
+SRCREV = "84caf035ae6123e2296b72006cd2cf698c65eb46"
+S = "${WORKDIR}/git"
+
+#Default Dual License https://github.com/linux-rdma/rdma-core/blob/master/COPYING.md
+LICENSE = "BSD-2-Clause | GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.BSD_FB;md5=0ec18bae1a9df92c8d6ae01f94a289ae \
+		   file://COPYING.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+EXTRA_OECMAKE = " \
+    -DCMAKE_INSTALL_SYSTEMD_SERVICEDIR=${systemd_system_unitdir} \
+    -DCMAKE_INSTALL_PERLDIR=${libdir}/perl5/${@get_perl_version(d)} \
+"
+
+FILES_SOLIBSDEV = ""
+FILES_${PN} += "${libdir}/*"
+INSANE_SKIP_${PN} += "dev-so"
+
+inherit cmake cpan-base systemd
+
+SYSTEMD_SERVICE_${PN} = " \
+    srp_daemon.service \
+    iwpmd.service \
+    ibacm.socket \
+    rdma-load-modules@.service \
+    srp_daemon_port@.service \
+    rdma-hw.target \
+    ibacm.service \
+"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
diff --git a/meta-openembedded/meta-networking/recipes-support/ruli/files/float-conversion.patch b/meta-openembedded/meta-networking/recipes-support/ruli/files/float-conversion.patch
new file mode 100644
index 0000000..999f23f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ruli/files/float-conversion.patch
@@ -0,0 +1,19 @@
+clarify type conversion
+
+fixes
+| ruli_rand.c:54:47: error: implicit conversion from 'unsigned int' to 'float' changes value from 4294967295 to 4294967296 [-Werror,-Wimplicit-int-float-conversion]
+|
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/ruli_rand.c
++++ b/src/ruli_rand.c
+@@ -51,7 +51,7 @@ int ruli_rand_next(ruli_rand_t *rand_ctx
+ 
+   u = isaac_rand(&rand_ctx->isaac_ctx);
+ 
+-  r = (int) ((float) (1.0 + max - min) *  u / ISAAC_UB4MAXVAL + min);
++  r = (int) ((float) (1.0 + max - min) *  u / (float) (ISAAC_UB4MAXVAL + min));
+ 
+   assert(min <= r);
+   assert(r <= max);
diff --git a/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb b/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb
index b82a3d0..f920b59 100644
--- a/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb
@@ -12,6 +12,7 @@
            file://0001-src-ruli_addr.c-Add-missing-format-string.patch \
            file://0001-ruli_srv-Mark-prev_addr_list_size-as-unused.patch \
            file://0001-Make-space-for-flags-from-environment.patch \
+           file://float-conversion.patch \
            "
 
 SRC_URI[md5sum] = "e73fbfdeadddb68a703a70cea5271468"
@@ -19,7 +20,10 @@
 
 B = "${S}"
 
-EXTRA_OEMAKE = 'CC="${CC}" OOP_BASE_DIR="${STAGING_EXECPREFIXDIR}" INSTALL_BASE_DIR="${D}${exec_prefix}"'
+EXTRA_OEMAKE = 'CC="${CC}" OOP_BASE_DIR="${STAGING_EXECPREFIXDIR}" \
+                INSTALL_BASE_DIR="${D}${exec_prefix}" \
+                OOP_LIB_DIR=${STAGING_EXECPREFIXDIR}/${baselib} \
+                INSTALL_LIB_DIR=${D}${libdir}'
 
 do_configure() {
     touch configure-stamp
diff --git a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.8.1.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.8.2.bb
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.8.1.bb
rename to meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.8.2.bb
index b521633..f05d696 100644
--- a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.8.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.8.2.bb
@@ -12,8 +12,8 @@
            file://0001-memory.h-Include-stdint.h-for-uintptr_t.patch \
            "
 
-SRC_URI[md5sum] = "5a6b9980cd1ac4fad3c24b55ed960ac9"
-SRC_URI[sha256sum] = "d9af70acea5c054952ad1584916c1bf231b064eb6c8a9791dcb6ae90a769990c"
+SRC_URI[md5sum] = "d94eac2caed51b0cc776e5887b10bace"
+SRC_URI[sha256sum] = "86900ddbe7337c923dadf2c8339ae8ed2b9158e3691745884d08ae534677430e"
 
 UPSTREAM_CHECK_REGEX = "strongswan-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.55.bb b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.56.bb
similarity index 85%
rename from meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.55.bb
rename to meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.56.bb
index df455db..3411e5d 100644
--- a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.55.bb
+++ b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.56.bb
@@ -6,7 +6,7 @@
 # a combined work based on stunnel. Thus, the terms and conditions of the GNU
 # General Public License cover the whole combination.
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c7acb24399f540ea323acb0366aecdbe"
+LIC_FILES_CHKSUM = "file://COPYING.md;md5=d6d635d290ba1705821254a0278f1ef7"
 
 DEPENDS = "autoconf-archive libnsl2 openssl"
 
@@ -14,8 +14,8 @@
            file://fix-openssl-no-des.patch \
 "
 
-SRC_URI[md5sum] = "7b41592034ede114e8c4e058fc8c238b"
-SRC_URI[sha256sum] = "90de69f41c58342549e74c82503555a6426961b29af3ed92f878192727074c62"
+SRC_URI[md5sum] = "01b0ca9e071f582ff803a85d5ed72166"
+SRC_URI[sha256sum] = "7384bfb356b9a89ddfee70b5ca494d187605bb516b4fff597e167f97e2236b22"
 
 inherit autotools
 
diff --git a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.conf b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.conf
new file mode 100644
index 0000000..4ca18ef
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.conf
@@ -0,0 +1,330 @@
+##
+## tinyproxy.conf -- tinyproxy daemon configuration file
+##
+## This example tinyproxy.conf file contains example settings
+## with explanations in comments. For decriptions of all
+## parameters, see the tinproxy.conf(5) manual page.
+##
+
+#
+# User/Group: This allows you to set the user and group that will be
+# used for tinyproxy after the initial binding to the port has been done
+# as the root user. Either the user or group name or the UID or GID
+# number may be used.
+#
+User tinyproxy
+Group nogroup
+
+#
+# Port: Specify the port which tinyproxy will listen on.  Please note
+# that should you choose to run on a port lower than 1024 you will need
+# to start tinyproxy using root.
+#
+Port 8888
+
+#
+# Listen: If you have multiple interfaces this allows you to bind to
+# only one. If this is commented out, tinyproxy will bind to all
+# interfaces present.
+#
+#Listen 192.168.0.1
+
+#
+# Bind: This allows you to specify which interface will be used for
+# outgoing connections.  This is useful for multi-home'd machines where
+# you want all traffic to appear outgoing from one particular interface.
+#
+#Bind 192.168.0.1
+
+#
+# BindSame: If enabled, tinyproxy will bind the outgoing connection to the
+# ip address of the incoming connection.
+#
+#BindSame yes
+
+#
+# Timeout: The maximum number of seconds of inactivity a connection is
+# allowed to have before it is closed by tinyproxy.
+#
+Timeout 600
+
+#
+# ErrorFile: Defines the HTML file to send when a given HTTP error
+# occurs.  You will probably need to customize the location to your
+# particular install.  The usual locations to check are:
+#   /usr/local/share/tinyproxy
+#   /usr/share/tinyproxy
+#   /etc/tinyproxy
+#
+#ErrorFile 404 "/usr/share/tinyproxy/404.html"
+#ErrorFile 400 "/usr/share/tinyproxy/400.html"
+#ErrorFile 503 "/usr/share/tinyproxy/503.html"
+#ErrorFile 403 "/usr/share/tinyproxy/403.html"
+#ErrorFile 408 "/usr/share/tinyproxy/408.html"
+
+#
+# DefaultErrorFile: The HTML file that gets sent if there is no
+# HTML file defined with an ErrorFile keyword for the HTTP error
+# that has occured.
+#
+DefaultErrorFile "/usr/share/tinyproxy/default.html"
+
+#
+# StatHost: This configures the host name or IP address that is treated
+# as the stat host: Whenever a request for this host is received,
+# Tinyproxy will return an internal statistics page instead of
+# forwarding the request to that host.  The default value of StatHost is
+# tinyproxy.stats.
+#
+#StatHost "tinyproxy.stats"
+#
+
+#
+# StatFile: The HTML file that gets sent when a request is made
+# for the stathost.  If this file doesn't exist a basic page is
+# hardcoded in tinyproxy.
+#
+StatFile "/usr/share/tinyproxy/stats.html"
+
+#
+# LogFile: Allows you to specify the location where information should
+# be logged to.  If you would prefer to log to syslog, then disable this
+# and enable the Syslog directive.  These directives are mutually
+# exclusive.
+#
+#LogFile "/var/log/tinyproxy/tinyproxy.log"
+
+#
+# Syslog: Tell tinyproxy to use syslog instead of a logfile.  This
+# option must not be enabled if the Logfile directive is being used.
+# These two directives are mutually exclusive.
+#
+#Syslog On
+
+#
+# LogLevel: 
+#
+# Set the logging level. Allowed settings are:
+#	Critical	(least verbose)
+#	Error
+#	Warning
+#	Notice
+#	Connect		(to log connections without Info's noise)
+#	Info		(most verbose)
+#
+# The LogLevel logs from the set level and above. For example, if the
+# LogLevel was set to Warning, then all log messages from Warning to
+# Critical would be output, but Notice and below would be suppressed.
+#
+LogLevel Info
+
+#
+# PidFile: Write the PID of the main tinyproxy thread to this file so it
+# can be used for signalling purposes.
+#
+PidFile "/var/run/tinyproxy/tinyproxy.pid"
+
+#
+# XTinyproxy: Tell Tinyproxy to include the X-Tinyproxy header, which
+# contains the client's IP address.
+#
+#XTinyproxy Yes
+
+#
+# Upstream:
+#
+# Turns on upstream proxy support.
+#
+# The upstream rules allow you to selectively route upstream connections
+# based on the host/domain of the site being accessed.
+#
+# For example:
+#  # connection to test domain goes through testproxy
+#  upstream testproxy:8008 ".test.domain.invalid"
+#  upstream testproxy:8008 ".our_testbed.example.com"
+#  upstream testproxy:8008 "192.168.128.0/255.255.254.0"
+#
+#  # no upstream proxy for internal websites and unqualified hosts
+#  no upstream ".internal.example.com"
+#  no upstream "www.example.com"
+#  no upstream "10.0.0.0/8"
+#  no upstream "192.168.0.0/255.255.254.0"
+#  no upstream "."
+#
+#  # connection to these boxes go through their DMZ firewalls
+#  upstream cust1_firewall:8008 "testbed_for_cust1"
+#  upstream cust2_firewall:8008 "testbed_for_cust2"
+#
+#  # default upstream is internet firewall
+#  upstream firewall.internal.example.com:80
+#
+# The LAST matching rule wins the route decision.  As you can see, you
+# can use a host, or a domain:
+#  name     matches host exactly
+#  .name    matches any host in domain "name"
+#  .        matches any host with no domain (in 'empty' domain)
+#  IP/bits  matches network/mask
+#  IP/mask  matches network/mask
+#
+#Upstream some.remote.proxy:port
+
+#
+# MaxClients: This is the absolute highest number of threads which will
+# be created. In other words, only MaxClients number of clients can be
+# connected at the same time.
+#
+MaxClients 100
+
+#
+# MinSpareServers/MaxSpareServers: These settings set the upper and
+# lower limit for the number of spare servers which should be available.
+#
+# If the number of spare servers falls below MinSpareServers then new
+# server processes will be spawned.  If the number of servers exceeds
+# MaxSpareServers then the extras will be killed off.
+#
+MinSpareServers 5
+MaxSpareServers 20
+
+#
+# StartServers: The number of servers to start initially.
+#
+StartServers 10
+
+#
+# MaxRequestsPerChild: The number of connections a thread will handle
+# before it is killed. In practise this should be set to 0, which
+# disables thread reaping. If you do notice problems with memory
+# leakage, then set this to something like 10000.
+#
+MaxRequestsPerChild 0
+
+#
+# Allow: Customization of authorization controls. If there are any
+# access control keywords then the default action is to DENY. Otherwise,
+# the default action is ALLOW.
+#
+# The order of the controls are important. All incoming connections are
+# tested against the controls based on order.
+#
+Allow 127.0.0.1
+
+#
+# AddHeader: Adds the specified headers to outgoing HTTP requests that
+# Tinyproxy makes. Note that this option will not work for HTTPS
+# traffic, as Tinyproxy has no control over what headers are exchanged.
+#
+#AddHeader "X-My-Header" "Powered by Tinyproxy"
+
+#
+# ViaProxyName: The "Via" header is required by the HTTP RFC, but using
+# the real host name is a security concern.  If the following directive
+# is enabled, the string supplied will be used as the host name in the
+# Via header; otherwise, the server's host name will be used.
+#
+ViaProxyName "tinyproxy"
+
+#
+# DisableViaHeader: When this is set to yes, Tinyproxy does NOT add
+# the Via header to the requests. This virtually puts Tinyproxy into
+# stealth mode. Note that RFC 2616 requires proxies to set the Via
+# header, so by enabling this option, you break compliance.
+# Don't disable the Via header unless you know what you are doing...
+#
+#DisableViaHeader Yes
+
+#
+# Filter: This allows you to specify the location of the filter file.
+#
+#Filter "/etc/filter"
+
+#
+# FilterURLs: Filter based on URLs rather than domains.
+#
+#FilterURLs On
+
+#
+# FilterExtended: Use POSIX Extended regular expressions rather than
+# basic.
+#
+#FilterExtended On
+
+#
+# FilterCaseSensitive: Use case sensitive regular expressions.
+#
+#FilterCaseSensitive On
+
+#
+# FilterDefaultDeny: Change the default policy of the filtering system.
+# If this directive is commented out, or is set to "No" then the default
+# policy is to allow everything which is not specifically denied by the
+# filter file.
+#
+# However, by setting this directive to "Yes" the default policy becomes
+# to deny everything which is _not_ specifically allowed by the filter
+# file.
+#
+#FilterDefaultDeny Yes
+
+#
+# Anonymous: If an Anonymous keyword is present, then anonymous proxying
+# is enabled.  The headers listed are allowed through, while all others
+# are denied. If no Anonymous keyword is present, then all headers are
+# allowed through.  You must include quotes around the headers.
+#
+# Most sites require cookies to be enabled for them to work correctly, so
+# you will need to allow Cookies through if you access those sites.
+#
+#Anonymous "Host"
+#Anonymous "Authorization"
+#Anonymous "Cookie"
+
+#
+# ConnectPort: This is a list of ports allowed by tinyproxy when the
+# CONNECT method is used.  To disable the CONNECT method altogether, set
+# the value to 0.  If no ConnectPort line is found, all ports are
+# allowed (which is not very secure.)
+#
+# The following two ports are used by SSL.
+#
+ConnectPort 443
+ConnectPort 563
+
+#
+# Configure one or more ReversePath directives to enable reverse proxy
+# support. With reverse proxying it's possible to make a number of
+# sites appear as if they were part of a single site.
+#
+# If you uncomment the following two directives and run tinyproxy
+# on your own computer at port 8888, you can access Google using
+# http://localhost:8888/google/ and Wired News using
+# http://localhost:8888/wired/news/. Neither will actually work
+# until you uncomment ReverseMagic as they use absolute linking.
+#
+#ReversePath "/google/"	"http://www.google.com/"
+#ReversePath "/wired/"	"http://www.wired.com/"
+
+#
+# When using tinyproxy as a reverse proxy, it is STRONGLY recommended
+# that the normal proxy is turned off by uncommenting the next directive.
+#
+#ReverseOnly Yes
+
+#
+# Use a cookie to track reverse proxy mappings. If you need to reverse
+# proxy sites which have absolute links you must uncomment this.
+#
+#ReverseMagic Yes
+
+#
+# The URL that's used to access this reverse proxy. The URL is used to
+# rewrite HTTP redirects so that they won't escape the proxy. If you
+# have a chain of reverse proxies, you'll need to put the outermost
+# URL here (the address which the end user types into his/her browser).
+#
+# If not set then no rewriting occurs.
+#
+#ReverseBaseURL "http://localhost:8888/"
+
+
+
diff --git a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.service b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.service
index df42745..78df437 100644
--- a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.service
+++ b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy/tinyproxy.service
@@ -3,12 +3,12 @@
 RequiresMountsFor=/var
 
 [Service]
-Group=tinyproxy
 ExecStartPre=/bin/mkdir -p /var/log/tinyproxy
-ExecStartPre=/bin/chown -R nobody.tinyproxy /var/log/tinyproxy
+ExecStartPre=/bin/chown -R tinyproxy.nogroup /var/log/tinyproxy
 ExecStartPre=/bin/mkdir -p /var/run/tinyproxy
-ExecStartPre=/bin/chown -R nobody.tinyproxy /var/run/tinyproxy
+ExecStartPre=/bin/chown -R tinyproxy.nogroup /var/run/tinyproxy
 ExecStart=/usr/bin/tinyproxy -d
+PIDFile=/var/run/tinyproxy/tinyproxy.pid
 
 [Install]
 WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.10.0.bb b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.10.0.bb
index 144dcf3..7d97f52 100644
--- a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.10.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.10.0.bb
@@ -4,8 +4,10 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.gz \
-		   file://disable-documentation.patch \
-		   file://tinyproxy.service"
+           file://disable-documentation.patch \
+           file://tinyproxy.service \
+           file://tinyproxy.conf \
+           "
 
 SRC_URI[md5sum] = "423047c8dc53a15e19f78e238198549c"
 SRC_URI[sha256sum] = "6020955e6a0ef0ef898ad5bb17a448c47f9e4c003c464b4ae7c4dba063272055"
@@ -23,7 +25,7 @@
 #User specific
 USERADD_PACKAGES = "${PN}"
 USERADD_PARAM_${PN} = "--system --home /dev/null \
-                       --no-user-group --gid nogroup tinypoxy"
+                       --no-user-group --gid nogroup tinyproxy"
 
 SYSTEMD_PACKAGES += "${BPN}"
 SYSTEMD_SERVICE_${PN} = "tinyproxy.service"
@@ -34,4 +36,5 @@
 		install -d ${D}${systemd_system_unitdir}
 		install -m 0644 ${WORKDIR}/tinyproxy.service ${D}${systemd_system_unitdir}
 	fi
+	install -m 0644 ${WORKDIR}/tinyproxy.conf ${D}${sysconfdir}/tinyproxy.conf
 }
diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.0.6.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.0.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.0.6.bb
rename to meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.0.bb
index ccaa0c9..df46b33 100644
--- a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.0.6.bb
+++ b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.0.bb
@@ -12,14 +12,14 @@
 
 UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src"
 
-SRC_URI[md5sum] = "c6f8d12a3efe21cc7885f7cb0c4bd938"
-SRC_URI[sha256sum] = "a87f4022a0c15ddbf1730bf1acafce9e75a4e657ce9fa494ceda0324c0c3e33e"
+SRC_URI[md5sum] = "259915adbbaded15de075afe7b4b03b6"
+SRC_URI[sha256sum] = "4cfd33a19a454ff4002243e9d04d6afd64280a109a21ae652a192f2be2b1b66c"
 
 PE = "1"
 
 inherit cmake pkgconfig python3native perlnative upstream-version-is-even
 
-PACKAGECONFIG ?= "libpcap gnutls libnl libcap sbc ${@bb.utils.contains('BBFILE_COLLECTIONS', 'qt5-layer', 'qt5', '', d)}"
+PACKAGECONFIG ?= "libpcap gnutls libnl libcap sbc ${@bb.utils.contains('BBFILE_COLLECTIONS', 'qt5-layer', 'qt5 plugins', '', d)}"
 
 PACKAGECONFIG_class-native = "libpcap gnutls ssl libssh"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_487.bb b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_488.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_487.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_488.bb
index 42864be..5885b14 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_487.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_488.bb
@@ -10,8 +10,8 @@
     file://parallelism.patch \
     file://copyright.txt \
 "
-SRC_URI[md5sum] = "2dbe035caf99c5367625352e158bb866"
-SRC_URI[sha256sum] = "2c488a7ccddd624fd557af16e71442c367b131d6178e1b4023bbd532bacdda59"
+SRC_URI[md5sum] = "d60a69e44cda8436f4f94d860958efc2"
+SRC_URI[sha256sum] = "960265163d93f15f7ad352f726d4837c5dd794fff357c743fdb56cbcf4abca04"
 
 UPSTREAM_CHECK_REGEX = "iozone3_(?P<pver>\d+).tar"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
index 34a6220..83934ab 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
@@ -12,6 +12,9 @@
 
 Update for 2.22.
 Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+
+Update to work for python3
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
  tests/run_tests.py | 12 +++++++++++-
  1 file changed, 11 insertions(+), 1 deletion(-)
@@ -36,7 +39,7 @@
 +        return sizes
 +    except OSError:
 +        return sizes
-+    out = p.stdout.read().strip()
++    out = p.stdout.read().decode().strip()
 +
      if rc != 0 or out == "":
          return sizes
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.0.1.bb b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.2.1.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.0.1.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.2.1.bb
index 89050e4..52b341b 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.2.1.bb
@@ -6,8 +6,8 @@
 SECTION = "console/tests"
 
 SRC_URI = "http://www.phoronix-test-suite.com/releases/${BP}.tar.gz"
-SRC_URI[md5sum] = "58023c8136a0206909552942660fe28a"
-SRC_URI[sha256sum] = "a117a4350774e67989d90bf0b5e82a8072652f8caa60a62c3e5f64adc317ce14"
+SRC_URI[md5sum] = "ad80ed9a5835929138473f764ff0d5db"
+SRC_URI[sha256sum] = "675e7ca96719e2f3b42a6c13421213a398f04da0f8e78f4691fa9261fdeb8501"
 
 S = "${WORKDIR}/phoronix-test-suite"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb b/meta-openembedded/meta-oe/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb
new file mode 100644
index 0000000..de4fa16
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Command line interface for testing internet bandwidth using speedtest.net"
+AUTHOR = "Matt Martz"
+
+LICENSE="Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit setuptools3
+
+SRC_URI = "git://github.com/sivel/speedtest-cli.git"
+SRCREV = "c58ad3367bf27f4b4a4d5b1bca29ebd574731c5d"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} = "python3 python3-setuptools-scm"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.9.bb b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.9.bb
index 92c902b..ea8bc17 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.9.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.9.bb
@@ -27,7 +27,7 @@
 PACKAGES =+ "${PN}-dracut ${PN}-zsh-completion"
 
 FILES_${PN} += "${systemd_system_unitdir}"
-FILES_${PN}-dracut = "${libdir}/dracut/dracut.conf.d"
+FILES_${PN}-dracut = "${nonarch_libdir}/dracut/dracut.conf.d"
 FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions"
 
 RDEPENDS_${PN} = "util-linux-uuidgen"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/rwmem/rwmem_1.2.bb b/meta-openembedded/meta-oe/recipes-bsp/rwmem/rwmem_1.2.bb
index 5d81fdb..065243c 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/rwmem/rwmem_1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/rwmem/rwmem_1.2.bb
@@ -15,7 +15,7 @@
 
 PV .= "+git${SRCPV}"
 
-SRCREV_rwmem = "cc296c5366a35a4c4271cfa3cc9831f6f34bfd9d"
+SRCREV_rwmem = "3ec3e421211b58e766651c2e3a3a21acf14a1906"
 SRCREV_inih = "4b10c654051a86556dfdb634c891b6c3224c4109"
 
 SRCREV_FORMAT = "rwmem_inih"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch b/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch
new file mode 100644
index 0000000..ffe0a00
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch
@@ -0,0 +1,53 @@
+From 63dc2d0c9384d85482dc4cbb3c179b4b0bb18d4e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 22:32:01 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs
+
+Helps install cmakefiles in right libdir
+
+Upstream-Status: Submitted [https://github.com/labapart/gattlib/pull/139]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt      |  5 +++--
+ dbus/CMakeLists.txt | 18 ++++++++++--------
+ 2 files changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 12d8d71..ded7239 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -152,7 +152,8 @@ endif()
+ #
+ # List of file to install
+ #
+-install(FILES include/gattlib.h DESTINATION include)
+-install(FILES ${PROJECT_BINARY_DIR}/gattlib.pc DESTINATION lib/pkgconfig)
++include(GNUInstallDirs)
++install(FILES include/gattlib.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
++install(FILES ${PROJECT_BINARY_DIR}/gattlib.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ 
+ include(CPack)
+diff --git a/dbus/CMakeLists.txt b/dbus/CMakeLists.txt
+index f5096ce..cef031f 100644
+--- a/dbus/CMakeLists.txt
++++ b/dbus/CMakeLists.txt
+@@ -19,7 +19,7 @@
+ #  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ #
+ 
+-cmake_minimum_required(VERSION 2.6)
++cmake_minimum_required(VERSION 3.0)
+ 
+ find_package(PkgConfig REQUIRED)
+ 
+@@ -119,4 +119,6 @@ endif()
+ add_library(gattlib SHARED ${gattlib_SRCS})
+ target_link_libraries(gattlib ${gattlib_LIBS})
+ 
+-install(TARGETS gattlib LIBRARY DESTINATION lib)
++include(GNUInstallDirs)
++
++install(TARGETS gattlib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
index 0e6fce9..6b4decc 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
@@ -9,11 +9,13 @@
 
 PV = "0.2+git${SRCPV}"
 
-SRC_URI = "git://github.com/labapart/gattlib.git"
-SRC_URI += "file://dbus-avoid-strange-chars-from-the-build-dir.patch"
+SRC_URI = "git://github.com/labapart/gattlib.git \
+           file://dbus-avoid-strange-chars-from-the-build-dir.patch \
+           file://0001-cmake-Use-GNUInstallDirs.patch \
+           "
 
 SRCBRANCH = "master"
-SRCREV = "c6a33252221dff904cf277e085e2ce70aced8788"
+SRCREV = "5c7ee43bd70ee09a7170ddd55b9fdbdef69e9080"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.0.bb
index d11e0d4..cc34ca2 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.0.bb
@@ -28,7 +28,7 @@
     install -m644 ${S}/doc/*.txt ${D}${docdir}/${BPN}
 }
 
-FILES_${PN} += "${datadir}/dbus-1 ${libdir}/modules-load.d ${systemd_unitdir}/network/"
+FILES_${PN} += "${datadir}/dbus-1 ${nonarch_libdir}/modules-load.d ${systemd_unitdir}/network/"
 
 SYSTEMD_SERVICE_${PN} = "iwd.service ${@bb.utils.contains('PACKAGECONFIG', 'wired', 'ead.service', '', d)}"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.bb b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.1.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.1.bb
index e27a4ae..6164c82 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.1.bb
@@ -31,8 +31,8 @@
            file://krb5-kdc.service \
            file://krb5-admin-server.service \
 "
-SRC_URI[md5sum] = "3b729d89eb441150e146780c4138481b"
-SRC_URI[sha256sum] = "5a6e2284a53de5702d3dc2be3b9339c963f9b5397d3fbbc53beb249380a781f5"
+SRC_URI[md5sum] = "417d654c72526ac51466e7fe84608878"
+SRC_URI[sha256sum] = "3706d7ec2eaa773e0e32d3a87bf742ebaecae7d064e190443a3acddfd8afb181"
 
 CVE_PRODUCT = "kerberos"
 CVE_VERSION = "5-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.20.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.20.4.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.20.2.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.20.4.bb
index 2c4a59f..a3ef80c 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.20.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.20.4.bb
@@ -14,5 +14,5 @@
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
            file://clang.patch \
 "
-SRC_URI[md5sum] = "988a6a7fd4a2f4e08c098992180e5b02"
-SRC_URI[sha256sum] = "550fb69e5e57f7646f8eb9ed8d24e44ea869ad846be9c162893f12e43528059b"
+SRC_URI[md5sum] = "d38d637e33cde8a91484f53a9f6c4d49"
+SRC_URI[sha256sum] = "ac2708a409b09f1f6f1786a8a9e39c36619aa8d6f285ea943daa7a48ea36d3e8"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.2.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.2.bb
index 9b89e1d..35a58d2 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.2.bb
@@ -14,8 +14,8 @@
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
            "
 
-SRC_URI[md5sum] = "4b181c0a8b933226ce3dce09565fe8f8"
-SRC_URI[sha256sum] = "aeb69f90c273467cce246176cba0967c6413f1995a976992770a597c4fe28c79"
+SRC_URI[md5sum] = "e49c419112d708b5301af7ccc2c090ff"
+SRC_URI[sha256sum] = "4ae4e476f960dbc0d04b1c0368776eb78edffd4421f3e4c074bb2bfb6375b282"
 
 PACKAGECONFIG ??= "udev mbim"
 PACKAGECONFIG[udev] = ",--without-udev,libgudev"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.33.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.34.0.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.33.1.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.34.0.bb
index 604568e..b842bbd 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.33.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.34.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a68902a430e32200263d182d44924d47"
 
-SRCREV = "07ad32138f4d2285ba2226b5e20462b27b091a59"
+SRCREV = "15ae750151ac9341e5945eb38f8982d59fb99201"
 SRC_URI = "git://github.com/libuv/libuv;branch=v1.x"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..0e38f7d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,40 @@
+From 50a48a7bd8d65a165ce2aac4ba0c1e02bded04aa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 12:21:31 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ plugins/devinput.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/plugins/devinput.c b/plugins/devinput.c
+index d4d733a..feb4a61 100644
+--- a/plugins/devinput.c
++++ b/plugins/devinput.c
+@@ -34,6 +34,11 @@
+ #include <linux/uinput.h>
+ #include <sys/stat.h>
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #ifndef EV_SYN
+ /* previous name */
+ #define EV_SYN EV_RST
+@@ -459,7 +464,7 @@ char* devinput_rec(struct ir_remote* remotes)
+ 		return 0;
+ 	}
+ 
+-	log_trace("time %ld.%06ld  type %d  code %d  value %d", event.time.tv_sec, event.time.tv_usec, event.type,
++	log_trace("time %ld.%06ld  type %d  code %d  value %d", event.input_event_sec, event.input_event_usec, event.type,
+ 		  event.code, event.value);
+ 
+ 	value = (unsigned)event.value;
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb b/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb
index b13163d..606caee 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb
@@ -13,6 +13,7 @@
 
 SRC_URI = "http://prdownloads.sourceforge.net/lirc/lirc-${PV}.tar.bz2 \
     file://pollfd.patch \
+    file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
     file://lircd.service \
     file://lircd.init \
     file://lircexec.init \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.9.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.10.0.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.9.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.10.0.bb
index 5096d6c..2ef6b18 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.10.0.bb
@@ -4,8 +4,8 @@
 LICENSE = "MIT"
 
 SRC_URI = "git://github.com/alanxz/rabbitmq-c.git"
-# v0.9.0-master
-SRCREV = "7e693a23f7fb7120f85995d3c922814495be30db"
+# v0.10.0-master
+SRCREV = "ffe918a5fcef72038a88054dca3c56762b1953d4"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch
new file mode 100644
index 0000000..485d7a4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch
@@ -0,0 +1,42 @@
+From a07e56e1a2e70a9b81eb0a65f345cf45a7a93a81 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 21:56:23 -0800
+Subject: [PATCH] DefineInstallationPaths.cmake: Define libdir in terms of
+ LIB_SUFFIX
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ build/cmake/DefineInstallationPaths.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/build/cmake/DefineInstallationPaths.cmake
++++ b/build/cmake/DefineInstallationPaths.cmake
+@@ -22,11 +22,11 @@
+ set(BIN_INSTALL_DIR "bin" CACHE PATH "The binary install dir (default: bin)")
+ set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The library install dir (default: lib${LIB_SUFFIX})")
+ set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The library install dir (default: include)")
+-set(CMAKE_INSTALL_DIR "lib/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
+-set(PKGCONFIG_INSTALL_DIR "lib/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
++set(CMAKE_INSTALL_DIR "lib${LIB_SUFFIX}/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
++set(PKGCONFIG_INSTALL_DIR "lib${LIB_SUFFIX}/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
+ set(DOC_INSTALL_DIR "share/doc" CACHE PATH "The subdirectory to install documentation files (default: share/doc)")
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+ set(exec_prefix "${CMAKE_INSTALL_PREFIX}/bin")
+-set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
++set(libdir "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
+ set(includedir "${CMAKE_INSTALL_PREFIX}/include")
+ set(cmakedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DIR}")
+--- a/build/cmake/DefineCMakeDefaults.cmake
++++ b/build/cmake/DefineCMakeDefaults.cmake
+@@ -44,8 +44,8 @@ include(BuildType)
+ # top of the build tree rather than in hard-to-find leaf
+ # directories. This simplifies manual testing and the use of the build
+ # tree rather than installed thrift libraries.
+-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
++set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX})
++set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX})
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+ 
+ #
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.12.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.13.0.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.12.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.13.0.bb
index 1c69951..92bcb21 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.12.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.13.0.bb
@@ -4,18 +4,19 @@
 
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=394465e125cffc0f133695ed43f14047 \
-                    file://NOTICE;md5=42748ae4646b45fbfa5182807321fb6c"
+                    file://NOTICE;md5=2659b43daca219f99a2f2626ea128f73"
 
 DEPENDS = "thrift-native boost flex-native bison-native openssl"
 
-SRC_URI = "https://www-eu.apache.org/dist/thrift//${PV}/${BPN}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "3deebbb4d1ca77dd9c9e009a1ea02183"
-SRC_URI[sha256sum] = "c336099532b765a6815173f62df0ed897528a9d551837d627c1f87fadad90428"
+SRC_URI = "https://www-eu.apache.org/dist/thrift//${PV}/${BPN}-${PV}.tar.gz \
+           file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch \
+          "
+SRC_URI[md5sum] = "38a27d391a2b03214b444cb13d5664f1"
+SRC_URI[sha256sum] = "7ad348b88033af46ce49148097afe354d513c1fca7c607b59c33ebb6064b5179"
 
 BBCLASSEXTEND = "native nativesdk"
 
-inherit pkgconfig cmake pythonnative
+inherit pkgconfig cmake python3native
 
 export STAGING_INCDIR
 export STAGING_LIBDIR
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch
new file mode 100644
index 0000000..fc9abd8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch
@@ -0,0 +1,29 @@
+From c86c524f951f6e973473bfee76fd5366368b2cbc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 09:32:41 -0800
+Subject: [PATCH] Fix narrowing conversion error
+
+xplc/moduleloader.cc: In static member function 'static Module* Module::loadModule(const char*)':                                                                                                                                             xplc/moduleloader.cc:67:14: error: narrowing conversion of '-1' from 'int' to 'unsigned int' [-Wnarrowing]                                                                                                                                       67 |   case (int)-1:                                                                                                                                                                                                                             |              ^
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ xplc/moduleloader.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xplc/moduleloader.cc b/xplc/moduleloader.cc
+index 02dd9a4..c53f5d2 100644
+--- a/xplc/moduleloader.cc
++++ b/xplc/moduleloader.cc
+@@ -62,7 +62,7 @@ Module* Module::loadModule(const char* modulename) {
+     return NULL;
+   }
+ 
+-  switch(moduleinfo->version_major) {
++  switch((int)moduleinfo->version_major) {
+ #ifdef UNSTABLE
+   case -1:
+     /* nothing to do */
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
index b220f9c..20becaf 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
@@ -22,6 +22,7 @@
            file://0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch \
            file://openssl-buildfix.patch \
            file://0001-Forward-port-to-OpenSSL-1.1.x.patch \
+           file://0001-Fix-narrowing-conversion-error.patch \
            "
 
 SRC_URI[md5sum] = "2760dac31a43d452a19a3147bfde571c"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
index cdd2f78..3697129 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
@@ -4,8 +4,8 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
 DEPENDS = "zeromq"
 
-SRCREV = "f5b36e563598d48fcc0d82e589d3596afef945ae"
-PV = "4.4.1"
+SRCREV = "e67fa0e16d7964876228952f60693f5c03ea0cc1"
+PV = "4.5.0"
 
 SRC_URI = "git://github.com/zeromq/cppzmq.git"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_21.bb b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_21.bb
index 98c50c4..8b4101a 100644
--- a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_21.bb
+++ b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_21.bb
@@ -26,7 +26,8 @@
 
 FILES_${PN} += "${systemd_system_unitdir}"
 FILES_${PN} += "${systemd_user_unitdir}"
-FILES_${PN} += "${libdir}/systemd/catalog"
+FILES_${PN} += "${nonarch_libdir}/systemd/catalog"
 
 EXTRA_OEMESON += " -Dselinux=${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'true', 'false', d)}"
 EXTRA_OEMESON += " -Daudit=${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'true', 'false', d)}"
+
diff --git a/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb b/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb
index 63d1247..22308d7 100644
--- a/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb
@@ -19,4 +19,4 @@
    install -Dm 0755 ${S}/mkemlog ${D}${bindir}/mkemlog
 }
 
-RDEPENDS_${PN} += "kernel-module-emlog"
+RRECOMMENDS_${PN} += "kernel-module-emlog"
diff --git a/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb b/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb
index 51f7226..a554a4c 100644
--- a/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb
@@ -7,6 +7,4 @@
     KVER=${KERNEL_VERSION} \
 "
 
-do_compile() {
-    oe_runmake modules
-}
+MAKE_TARGETS = "modules"
diff --git a/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb b/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb
index e3853a2..0fcf716 100644
--- a/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb
+++ b/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb
@@ -8,15 +8,19 @@
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=98d93d1ddc537f9b9ea6def64e046b5f"
 SECTION = "lib"
 
-inherit pkgconfig cmake
+inherit pkgconfig cmake features_check
+
+PV .= "+git${SRCPV}"
+SRCREV = "781fbbadb0bccc749058177b1385c82da9ace880"
+SRC_URI = "git://github.com/glfw/glfw.git"
 
 S = "${WORKDIR}/git"
-SRC_URI = "git://github.com/glfw/glfw.git"
-SRCREV = "d25248343e248337284dfbe5ecd1eddbd37ae66d"
 
-EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
+EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_DOCS=OFF"
+
+CFLAGS += "-fPIC"
 
 DEPENDS = "libpng libglu zlib libxrandr libxinerama libxi libxcursor"
-REQUIRED_DISTRO_FEATURES = "x11"
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
 COMPATIBLE_HOST_libc-musl = "null"
diff --git a/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb b/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
index 7efd344..64c5f5c 100644
--- a/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
@@ -8,7 +8,7 @@
 inherit autotools pkgconfig
 
 S = "${WORKDIR}/git"
-SRCREV = "c42e2502d4627d3ea62f83c32677b100bb3cebdc"
+SRCREV = "2d4543673e9b76c02679ca8b89259659f1afd932"
 SRC_URI = "git://github.com/nfc-tools/libnfc.git \
            file://0001-usbbus-Include-stdint.h-for-uintX_t.patch \
           "
diff --git a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.0.bb b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.2.bb
similarity index 73%
rename from meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.0.bb
rename to meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.2.bb
index 3c0330f..26bd02c 100644
--- a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.2.bb
@@ -6,12 +6,12 @@
 DEPENDS = "mm-common"
 
 SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/3.0/libsigc++-${PV}.tar.xz"
-SRC_URI[md5sum] = "6ffe924f1d8624b5716468cde67dc03f"
-SRC_URI[sha256sum] = "50a0855c1eb26e6044ffe888dbe061938ab4241f96d8f3754ea7ead38ab8ed06"
+SRC_URI[md5sum] = "1f93f8ed4ead38e876157834b2c57c21"
+SRC_URI[sha256sum] = "4b77676de1e74774ec456bcc6ac6f04a2791a12cc1fe07f8305d4c3c86e2f339"
 
 S = "${WORKDIR}/libsigc++-${PV}"
 
-inherit autotools
+inherit setuptools3 meson
 
 FILES_${PN}-dev += "${libdir}/sigc++-*/"
 FILES_${PN}-doc += "${datadir}/devhelp"
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v65.bb b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v67.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v65.bb
rename to meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v67.bb
index 69ee1d4..da0c656 100644
--- a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v65.bb
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v67.bb
@@ -10,7 +10,7 @@
 
 inherit autotools-brokensep pkgconfig bash-completion systemd
 
-SRCREV = "ed17fd14608d8de072c8c090ffc5fcf78c4f48ff"
+SRCREV = "637bb424dc317a044c722a671355ef9df0e0d30f"
 SRC_URI = "git://github.com/pmem/ndctl.git"
 
 DEPENDS = "kmod udev json-c keyutils"
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
index 310de53..31c3f4e 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
@@ -93,6 +93,7 @@
     "
 RDEPENDS_packagegroup-meta-oe-bsp_remove_mipsarch = "efivar efibootmgr"
 RDEPENDS_packagegroup-meta-oe-bsp_remove_powerpc = "efivar efibootmgr"
+RDEPENDS_packagegroup-meta-oe-bsp_remove_powerpc64 = "efivar efibootmgr"
 RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv64 = "efivar efibootmgr"
 RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv32 = "efivar efibootmgr"
 
@@ -123,8 +124,9 @@
 RDEPENDS_packagegroup-meta-oe-devtools_remove_mips64 = "nodejs"
 RDEPENDS_packagegroup-meta-oe-devtools_remove_mips64el = "nodejs"
 RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc = "android-tools breakpad uftrace lshw"
-RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv64 = "uftrace lshw"
-RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv32 = "uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc64 = "android-tools uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv64 = "nodejs uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv32 = "nodejs uftrace lshw"
 
 RDEPENDS_packagegroup-meta-oe-extended ="\
     byacc cfengine cfengine-masterfiles cmpi-bindings \
@@ -153,6 +155,7 @@
     "
 RDEPENDS_packagegroup-meta-oe-extended_remove_mipsarch = "upm mraa tiptop"
 RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc = "upm mraa"
+RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64 = "upm mraa"
 RDEPENDS_packagegroup-meta-oe-extended_remove_riscv64 = "upm mraa tiptop"
 RDEPENDS_packagegroup-meta-oe-extended_remove_riscv32 = "upm mraa tiptop"
 RDEPENDS_packagegroup-meta-oe-extended_remove_libc-musl = "lcdproc"
@@ -258,6 +261,8 @@
 
 RDEPENDS_packagegroup-meta-oe-support_remove_arm ="numactl"
 RDEPENDS_packagegroup-meta-oe-support_remove_mipsarch = "gperftools"
+RDEPENDS_packagegroup-meta-oe-support_remove_riscv64 = "uim"
+RDEPENDS_packagegroup-meta-oe-support_remove_riscv32 = "uim"
 
 RDEPENDS_packagegroup-meta-oe-support-egl ="\
     freerdp libnice opencv \
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.7.6/run-ptest b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.7.6/run-ptest
new file mode 100755
index 0000000..f6ade0c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.7.6/run-ptest
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+set -o pipefail
+
+SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
+
+${SCRIPTPATH}/../tests/sdbus-c++-unit-tests 2>&1 | \
+sed -r 's/^\[\s+OK\s+\] (.*) \([0-9]+\sms\)$/OK: \1 /' | \
+sed -r 's/^\[\s+FAILED\s+\] (.*) \([0-9]+\sms\)$/FAILED: \1 /' | \
+awk '{if ($1 == "OK:" || $1 == "FAILED:") {print $0}}'
+
+${SCRIPTPATH}/../tests/sdbus-c++-integration-tests 2>&1 | \
+sed -r 's/^\[\s+OK\s+\] (.*) \([0-9]+\sms\)$/OK: \1 /' | \
+sed -r 's/^\[\s+FAILED\s+\] (.*) \([0-9]+\sms\)$/FAILED: \1 /' | \
+awk '{if ($1 == "OK:" || $1 == "FAILED:") {print $0}}' 
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch
new file mode 100644
index 0000000..2f4daf8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch
@@ -0,0 +1,413 @@
+From 85e3c3046562ec24fc2f09ebfd08bf9f168091d5 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Fri, 1 Mar 2019 15:22:15 +0800
+Subject: [PATCH] do not disable buffer in writing files
+
+Do not disable buffer in writing files, otherwise we get
+failure at boot for musl like below.
+
+  [!!!!!!] Failed to allocate manager object.
+
+And there will be other failures, critical or not critical.
+This is specific to musl.
+
+Upstream-Status: Inappropriate [musl]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/cgroup-util.c                 | 14 +++++++-------
+ src/basic/procfs-util.c                 |  4 ++--
+ src/basic/smack-util.c                  |  2 +-
+ src/basic/util.c                        |  2 +-
+ src/binfmt/binfmt.c                     |  6 +++---
+ src/core/main.c                         |  4 ++--
+ src/core/smack-setup.c                  |  8 ++++----
+ src/hibernate-resume/hibernate-resume.c |  2 +-
+ src/libsystemd/sd-device/sd-device.c    |  2 +-
+ src/login/logind-dbus.c                 |  2 +-
+ src/nspawn/nspawn-cgroup.c              |  2 +-
+ src/nspawn/nspawn.c                     |  6 +++---
+ src/shared/sysctl-util.c                |  2 +-
+ src/sleep/sleep.c                       | 10 +++++-----
+ src/udev/udevadm-trigger.c              |  2 +-
+ src/udev/udevd.c                        |  2 +-
+ src/vconsole/vconsole-setup.c           |  2 +-
+ 17 files changed, 36 insertions(+), 36 deletions(-)
+
+diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
+index 7b5839ccd6..18f6e8ffc8 100644
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -860,7 +860,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) {
+ 
+         xsprintf(c, PID_FMT "\n", pid);
+ 
+-        r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(fs, c, 0);
+         if (r < 0)
+                 return r;
+ 
+@@ -1142,7 +1142,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+ 
+         sc = strstrip(contents);
+         if (isempty(sc)) {
+-                r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file(fs, agent, 0);
+                 if (r < 0)
+                         return r;
+         } else if (!path_equal(sc, agent))
+@@ -1160,7 +1160,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+ 
+         sc = strstrip(contents);
+         if (streq(sc, "0")) {
+-                r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file(fs, "1", 0);
+                 if (r < 0)
+                         return r;
+ 
+@@ -1187,7 +1187,7 @@ int cg_uninstall_release_agent(const char *controller) {
+         if (r < 0)
+                 return r;
+ 
+-        r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(fs, "0", 0);
+         if (r < 0)
+                 return r;
+ 
+@@ -1197,7 +1197,7 @@ int cg_uninstall_release_agent(const char *controller) {
+         if (r < 0)
+                 return r;
+ 
+-        r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(fs, "", 0);
+         if (r < 0)
+                 return r;
+ 
+@@ -2053,7 +2053,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri
+         if (r < 0)
+                 return r;
+ 
+-        return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
++        return write_string_file(p, value, 0);
+ }
+ 
+ int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
+@@ -2697,7 +2697,7 @@ int cg_enable_everywhere(
+                                         return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
+                         }
+ 
+-                        r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++                        r = write_string_stream(f, s, 0);
+                         if (r < 0) {
+                                 log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
+                                                 FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index 42ce53d5aa..57512532a6 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -86,13 +86,13 @@ int procfs_tasks_set_limit(uint64_t limit) {
+          * decrease it, as threads-max is the much more relevant sysctl. */
+         if (limit > pid_max-1) {
+                 sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
+-                r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
+                 if (r < 0)
+                         return r;
+         }
+ 
+         sprintf(buffer, "%" PRIu64, limit);
+-        r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
+         if (r < 0) {
+                 uint64_t threads_max;
+ 
+diff --git a/src/basic/smack-util.c b/src/basic/smack-util.c
+index 123d00e13e..e7ea78f349 100644
+--- a/src/basic/smack-util.c
++++ b/src/basic/smack-util.c
+@@ -115,7 +115,7 @@ int mac_smack_apply_pid(pid_t pid, const char *label) {
+                 return 0;
+ 
+         p = procfs_file_alloca(pid, "attr/current");
+-        r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(p, label, 0);
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/basic/util.c b/src/basic/util.c
+index 93d610bc98..97dca64f73 100644
+--- a/src/basic/util.c
++++ b/src/basic/util.c
+@@ -294,7 +294,7 @@ void disable_coredumps(void) {
+         if (detect_container() > 0)
+                 return;
+ 
+-        r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0);
+         if (r < 0)
+                 log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
+ }
+diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
+index aa9d811f2e..8c7f2dae7a 100644
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -48,7 +48,7 @@ static int delete_rule(const char *rule) {
+         if (!fn)
+                 return log_oom();
+ 
+-        return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++        return write_string_file(fn, "-1", 0);
+ }
+ 
+ static int apply_rule(const char *rule) {
+@@ -56,7 +56,7 @@ static int apply_rule(const char *rule) {
+ 
+         (void) delete_rule(rule);
+ 
+-        r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to add binary format: %m");
+ 
+@@ -213,7 +213,7 @@ static int run(int argc, char *argv[]) {
+                 }
+ 
+                 /* Flush out all rules */
+-                (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++                (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+ 
+                 STRV_FOREACH(f, files) {
+                         k = apply_file(*f, true);
+diff --git a/src/core/main.c b/src/core/main.c
+index bcce7178a8..4199cedab9 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1285,7 +1285,7 @@ static int bump_unix_max_dgram_qlen(void) {
+         if (v >= DEFAULT_UNIX_MAX_DGRAM_QLEN)
+                 return 0;
+ 
+-        r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", WRITE_STRING_FILE_DISABLE_BUFFER, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
++        r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", 0, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
+         if (r < 0)
+                 return log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING, r,
+                                       "Failed to bump AF_UNIX datagram queue length, ignoring: %m");
+@@ -1509,7 +1509,7 @@ static void initialize_core_pattern(bool skip_setup) {
+         if (getpid_cached() != 1)
+                 return;
+ 
+-        r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m", arg_early_core_pattern);
+ }
+diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
+index b95e6239d4..fdbdaaaccb 100644
+--- a/src/core/smack-setup.c
++++ b/src/core/smack-setup.c
+@@ -325,17 +325,17 @@ int mac_smack_setup(bool *loaded_policy) {
+         }
+ 
+ #ifdef SMACK_RUN_LABEL
+-        r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
+-        r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
+         r = write_string_file("/sys/fs/smackfs/netlabel",
+-                              "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++                              "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
+-        r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
+ #endif
+diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c
+index 17e7cd1a00..87a7667716 100644
+--- a/src/hibernate-resume/hibernate-resume.c
++++ b/src/hibernate-resume/hibernate-resume.c
+@@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
+ 
+-        r = write_string_file("/sys/power/resume", major_minor, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/power/resume", major_minor, 0);
+         if (r < 0) {
+                 log_error_errno(r, "Failed to write '%s' to /sys/power/resume: %m", major_minor);
+                 return EXIT_FAILURE;
+diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
+index c4a7f2f3d3..bcac758284 100644
+--- a/src/libsystemd/sd-device/sd-device.c
++++ b/src/libsystemd/sd-device/sd-device.c
+@@ -1849,7 +1849,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
+         if (!value)
+                 return -ENOMEM;
+ 
+-        r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
++        r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
+         if (r < 0) {
+                 if (r == -ELOOP)
+                         return -EINVAL;
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index 30b9a66334..cc1d577933 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -1325,7 +1325,7 @@ static int trigger_device(Manager *m, sd_device *d) {
+                 if (!t)
+                         return -ENOMEM;
+ 
+-                (void) write_string_file(t, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
++                (void) write_string_file(t, "change", 0);
+         }
+ 
+         return 0;
+diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
+index 0462b46413..7c53d41483 100644
+--- a/src/nspawn/nspawn-cgroup.c
++++ b/src/nspawn/nspawn-cgroup.c
+@@ -123,7 +123,7 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t uid_shift) {
+         fn = strjoina(tree, cgroup, "/cgroup.procs");
+ 
+         sprintf(pid_string, PID_FMT, pid);
+-        r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
++        r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
+         if (r < 0) {
+                 log_error_errno(r, "Failed to move process: %m");
+                 goto finish;
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 2aec8041f0..841542f2f3 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -2357,7 +2357,7 @@ static int reset_audit_loginuid(void) {
+         if (streq(p, "4294967295"))
+                 return 0;
+ 
+-        r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/self/loginuid", "4294967295", 0);
+         if (r < 0) {
+                 log_error_errno(r,
+                                 "Failed to reset audit login UID. This probably means that your kernel is too\n"
+@@ -3566,13 +3566,13 @@ static int setup_uid_map(pid_t pid) {
+ 
+         xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
+         xsprintf(line, UID_FMT " " UID_FMT " " UID_FMT "\n", 0, arg_uid_shift, arg_uid_range);
+-        r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(uid_map, line, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write UID map: %m");
+ 
+         /* We always assign the same UID and GID ranges */
+         xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
+-        r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(uid_map, line, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write GID map: %m");
+ 
+diff --git a/src/shared/sysctl-util.c b/src/shared/sysctl-util.c
+index 93bdcf11bf..68cddb7a9f 100644
+--- a/src/shared/sysctl-util.c
++++ b/src/shared/sysctl-util.c
+@@ -88,7 +88,7 @@ int sysctl_write_ip_property(int af, const char *ifname, const char *property, c
+ 
+         log_debug("Setting '%s' to '%s'", p, value);
+ 
+-        return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER);
++        return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0);
+ }
+ 
+ int sysctl_read(const char *property, char **content) {
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index b9fe96635d..f168d7f890 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -54,7 +54,7 @@ static int write_hibernate_location_info(void) {
+ 
+         /* if it's a swap partition, we just write the disk to /sys/power/resume */
+         if (streq(type, "partition")) {
+-                r = write_string_file("/sys/power/resume", device, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file("/sys/power/resume", device, 0);
+                 if (r < 0)
+                         return log_debug_errno(r, "Failed to write partition device to /sys/power/resume: %m");
+ 
+@@ -98,14 +98,14 @@ static int write_hibernate_location_info(void) {
+ 
+         offset = fiemap->fm_extents[0].fe_physical / page_size();
+         xsprintf(offset_str, "%" PRIu64, offset);
+-        r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/power/resume_offset", offset_str, 0);
+         if (r < 0)
+                 return log_debug_errno(r, "Failed to write offset '%s': %m", offset_str);
+ 
+         log_debug("Wrote calculated resume_offset value to /sys/power/resume_offset: %s", offset_str);
+ 
+         xsprintf(device_str, "%lx", (unsigned long)stb.st_dev);
+-        r = write_string_file("/sys/power/resume", device_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/power/resume", device_str, 0);
+         if (r < 0)
+                 return log_debug_errno(r, "Failed to write device '%s': %m", device_str);
+ 
+@@ -121,7 +121,7 @@ static int write_mode(char **modes) {
+         STRV_FOREACH(mode, modes) {
+                 int k;
+ 
+-                k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
++                k = write_string_file("/sys/power/disk", *mode, 0);
+                 if (k >= 0)
+                         return 0;
+ 
+@@ -140,7 +140,7 @@ static int write_state(FILE **f, char **states) {
+         STRV_FOREACH(state, states) {
+                 int k;
+ 
+-                k = write_string_stream(*f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
++                k = write_string_stream(*f, *state, 0);
+                 if (k >= 0)
+                         return 0;
+                 log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state);
+diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c
+index 77d95e513f..25ce4abfb1 100644
+--- a/src/udev/udevadm-trigger.c
++++ b/src/udev/udevadm-trigger.c
+@@ -43,7 +43,7 @@ static int exec_list(sd_device_enumerator *e, const char *action, Set *settle_se
+                 if (!filename)
+                         return log_oom();
+ 
+-                r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file(filename, action, 0);
+                 if (r < 0) {
+                         log_full_errno(r == -ENOENT ? LOG_DEBUG : LOG_ERR, r,
+                                        "Failed to write '%s' to '%s': %m", action, filename);
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index cb5123042a..ea309a9e7f 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -1113,7 +1113,7 @@ static int synthesize_change_one(sd_device *dev, const char *syspath) {
+ 
+         filename = strjoina(syspath, "/uevent");
+         log_device_debug(dev, "device is closed, synthesising 'change' on %s", syspath);
+-        r = write_string_file(filename, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(filename, "change", 0);
+         if (r < 0)
+                 return log_device_debug_errno(dev, r, "Failed to write 'change' to %s: %m", filename);
+         return 0;
+diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
+index 75d052ae70..5a15c939d8 100644
+--- a/src/vconsole/vconsole-setup.c
++++ b/src/vconsole/vconsole-setup.c
+@@ -117,7 +117,7 @@ static int toggle_utf8_vc(const char *name, int fd, bool utf8) {
+ static int toggle_utf8_sysfs(bool utf8) {
+         int r;
+ 
+-        r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
+         if (r < 0)
+                 return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
+ 
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch
new file mode 100644
index 0000000..c6213ab
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch
@@ -0,0 +1,163 @@
+From 1eb84534dea05d41afed1d898cba212ad7d310dd Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 13:41:41 +0800
+Subject: [PATCH 02/24] don't use glibc-specific qsort_r
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+---
+ src/basic/sort-util.h              | 14 --------------
+ src/libsystemd/sd-hwdb/hwdb-util.c | 19 ++++++++++++++-----
+ src/shared/format-table.c          | 36 ++++++++++++++++++++++++------------
+ 3 files changed, 38 insertions(+), 31 deletions(-)
+
+diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
+index e029f8646e..27d68b341c 100644
+--- a/src/basic/sort-util.h
++++ b/src/basic/sort-util.h
+@@ -54,17 +54,3 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, __compar_fn
+                 int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
+                 qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
+         })
+-
+-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
+-        if (nmemb <= 1)
+-                return;
+-
+-        assert(base);
+-        qsort_r(base, nmemb, size, compar, userdata);
+-}
+-
+-#define typesafe_qsort_r(p, n, func, userdata)                          \
+-        ({                                                              \
+-                int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
+-                qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
+-        })
+diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
+index c83575c7c8..72f8f3a050 100644
+--- a/src/libsystemd/sd-hwdb/hwdb-util.c
++++ b/src/libsystemd/sd-hwdb/hwdb-util.c
+@@ -128,9 +128,13 @@ static void trie_free(struct trie *trie) {
+ 
+ DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
+ 
+-static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) {
+-        return strcmp(trie->strings->buf + a->key_off,
+-                      trie->strings->buf + b->key_off);
++static struct trie *trie_node_add_value_trie;
++static int trie_values_cmp(const void *v1, const void *v2) {
++        const struct trie_value_entry *a = v1;
++        const struct trie_value_entry *b = v2;
++
++        return strcmp(trie_node_add_value_trie->strings->buf + a->key_off,
++                      trie_node_add_value_trie->strings->buf + b->key_off);
+ }
+ 
+ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -158,7 +162,10 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+                         .value_off = v,
+                 };
+ 
+-                val = typesafe_bsearch_r(&search, node->values, node->values_count, trie_values_cmp, trie);
++                trie_node_add_value_trie = trie;
++                val = bsearch(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
++                trie_node_add_value_trie = NULL;
++
+                 if (val) {
+                         /* At this point we have 2 identical properties on the same match-string.
+                          * Since we process files in order, we just replace the previous value. */
+@@ -184,7 +191,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+                 .line_number = line_number,
+         };
+         node->values_count++;
+-        typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie);
++        trie_node_add_value_trie = trie;
++        qsort(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
++        trie_node_add_value_trie = NULL;
+         return 0;
+ }
+ 
+diff --git a/src/shared/format-table.c b/src/shared/format-table.c
+index a5c0a99b08..d595cbe372 100644
+--- a/src/shared/format-table.c
++++ b/src/shared/format-table.c
+@@ -850,31 +850,33 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
+         return CMP(index_a, index_b);
+ }
+ 
+-static int table_data_compare(const size_t *a, const size_t *b, Table *t) {
++static Table *user_table;
++static int table_data_compare(const void *x, const void *y) {
++        const size_t *a = x, *b=y;
+         size_t i;
+         int r;
+ 
+-        assert(t);
+-        assert(t->sort_map);
++        assert(user_table);
++        assert(user_table->sort_map);
+ 
+         /* Make sure the header stays at the beginning */
+-        if (*a < t->n_columns && *b < t->n_columns)
++        if (*a < user_table->n_columns && *b < user_table->n_columns)
+                 return 0;
+-        if (*a < t->n_columns)
++        if (*a < user_table->n_columns)
+                 return -1;
+-        if (*b < t->n_columns)
++        if (*b < user_table->n_columns)
+                 return 1;
+ 
+         /* Order other lines by the sorting map */
+-        for (i = 0; i < t->n_sort_map; i++) {
++        for (i = 0; i < user_table->n_sort_map; i++) {
+                 TableData *d, *dd;
+ 
+-                d = t->data[*a + t->sort_map[i]];
+-                dd = t->data[*b + t->sort_map[i]];
++                d = user_table->data[*a + user_table->sort_map[i]];
++                dd = user_table->data[*b + user_table->sort_map[i]];
+ 
+                 r = cell_data_compare(d, *a, dd, *b);
+                 if (r != 0)
+-                        return t->reverse_map && t->reverse_map[t->sort_map[i]] ? -r : r;
++                        return user_table->reverse_map && user_table->reverse_map[user_table->sort_map[i]] ? -r : r;
+         }
+ 
+         /* Order identical lines by the order there were originally added in */
+@@ -1107,7 +1109,12 @@ int table_print(Table *t, FILE *f) {
+                 for (i = 0; i < n_rows; i++)
+                         sorted[i] = i * t->n_columns;
+ 
+-                typesafe_qsort_r(sorted, n_rows, table_data_compare, t);
++                if (n_rows <= 1)
++                        return 0;
++                assert(sorted);
++                user_table = t;
++                qsort(sorted, n_rows, sizeof(size_t), table_data_compare);
++                user_table = NULL;
+         }
+ 
+         if (t->display_map)
+@@ -1534,7 +1541,12 @@ int table_to_json(Table *t, JsonVariant **ret) {
+                 for (i = 0; i < n_rows; i++)
+                         sorted[i] = i * t->n_columns;
+ 
+-                typesafe_qsort_r(sorted, n_rows, table_data_compare, t);
++                if (n_rows <= 1)
++                        return 0;
++                assert(sorted);
++                user_table = t;
++                qsort(sorted, n_rows, sizeof(size_t), table_data_compare);
++                user_table = NULL;
+         }
+ 
+         if (t->display_map)
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch
new file mode 100644
index 0000000..dcae668
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch
@@ -0,0 +1,25 @@
+Include sys/wait.h
+
+Fixes:
+src/login/logind-brightness.c:158:85: error: 'WEXITED' undeclared (first use in this function); did you mean 'WIFEXITED'?
+  158 |         r = sd_event_add_child(w->manager->event, &w->child_event_source, w->child, WEXITED, on_brightness_writer_exit, w);
+      |                                                                                     ^~~~~~~
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/login/logind-brightness.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/login/logind-brightness.c b/src/login/logind-brightness.c
+index 8dfa97d7ae..bddd4a2727 100644
+--- a/src/login/logind-brightness.c
++++ b/src/login/logind-brightness.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <sys/wait.h>
+ #include "bus-util.h"
+ #include "device-util.h"
+ #include "hash-funcs.h"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
new file mode 100644
index 0000000..2e39f7a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
@@ -0,0 +1,63 @@
+From a9421d55102fc84f77f7c21a2479fcd00652b896 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 13:55:12 +0800
+Subject: [PATCH 03/24] missing_type.h: add __compare_fn_t and comparison_fn_t
+
+Make it work with musl where comparison_fn_t and __compare_fn_t
+is not provided.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+---
+ src/basic/missing_type.h | 9 +++++++++
+ src/basic/sort-util.h    | 1 +
+ src/journal/catalog.c    | 1 +
+ 3 files changed, 11 insertions(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index bf8a6caa1b..2134fe5095 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -10,3 +10,12 @@
+ #if !HAVE_CHAR16_T
+ #define char16_t uint16_t
+ #endif
++
++#ifndef __GLIBC__
++typedef int (*comparison_fn_t)(const void *, const void *);
++#endif
++
++#ifndef __COMPAR_FN_T
++#define __COMPAR_FN_T
++typedef int (*__compar_fn_t)(const void *, const void *);
++#endif
+diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
+index e029f86..7247d40 100644
+--- a/src/basic/sort-util.h
++++ b/src/basic/sort-util.h
+@@ -4,6 +4,7 @@
+ #include <stdlib.h>
+ 
+ #include "macro.h"
++#include "missing.h"
+ 
+ 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/src/journal/catalog.c b/src/journal/catalog.c
+index 7beffc1e1a..4818a2e5cc 100644
+--- a/src/journal/catalog.c
++++ b/src/journal/catalog.c
+@@ -29,6 +29,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "tmpfile-util.h"
++#include "missing.h"
+ 
+ const char * const catalog_file_dirs[] = {
+         "/usr/local/lib/systemd/catalog/",
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch
new file mode 100644
index 0000000..7ee0d48
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch
@@ -0,0 +1,27 @@
+Include signal.h
+
+Fixes several signal set related errors:
+src/basic/copy.c:92:19: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
+src/basic/copy.c:93:19: error: implicit declaration of function 'sigaddset' [-Werror=implicit-function-declaration]
+src/basic/copy.c:93:34: error: 'SIGINT' undeclared (first use in this function)
+src/basic/copy.c:95:13: error: implicit declaration of function 'sigtimedwait' [-Werror=implicit-function-declaration]
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/copy.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/basic/copy.c b/src/basic/copy.c
+index ca311e021e..3cf7fc1697 100644
+--- a/src/basic/copy.c
++++ b/src/basic/copy.c
+@@ -12,6 +12,7 @@
+ #include <sys/xattr.h>
+ #include <time.h>
+ #include <unistd.h>
++#include <signal.h>
+ 
+ #include "alloc-util.h"
+ #include "btrfs-util.h"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
new file mode 100644
index 0000000..a2aad40
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
@@ -0,0 +1,432 @@
+From 7bcf3b166694090497a0acd2c5299e4e04fcc9b6 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:04:21 +0800
+Subject: [PATCH 04/24] add fallback parse_printf_format implementation
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ meson.build                     |   1 +
+ src/basic/meson.build           |   5 +
+ src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++++++++++
+ src/basic/parse-printf-format.h |  57 +++++++++
+ src/basic/stdio-util.h          |   2 +-
+ src/journal/journal-send.c      |   2 +-
+ 6 files changed, 338 insertions(+), 2 deletions(-)
+ create mode 100644 src/basic/parse-printf-format.c
+ create mode 100644 src/basic/parse-printf-format.h
+
+diff --git a/meson.build b/meson.build
+index 79b762faeb..7f8c679411 100644
+--- a/meson.build
++++ b/meson.build
+@@ -613,6 +613,7 @@ endif
+ foreach header : ['crypt.h',
+                   'linux/memfd.h',
+                   'linux/vm_sockets.h',
++                  'printf.h',
+                   'sys/auxv.h',
+                   'valgrind/memcheck.h',
+                   'valgrind/valgrind.h',
+diff --git a/src/basic/meson.build b/src/basic/meson.build
+index d6caf28f14..32c1acf349 100644
+--- a/src/basic/meson.build
++++ b/src/basic/meson.build
+@@ -312,6 +312,11 @@ foreach item : [['af',     af_list_txt,     'af',         ''],
+ endforeach
+ 
+ basic_sources += generated_gperf_headers
++
++if conf.get('HAVE_PRINTF_H') != 1
++        basic_sources += [files('parse-printf-format.c')]
++endif
++
+ basic_gcrypt_sources = files(
+         'gcrypt-util.c',
+         'gcrypt-util.h')
+diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
+new file mode 100644
+index 0000000000..49437e5445
+--- /dev/null
++++ b/src/basic/parse-printf-format.c
+@@ -0,0 +1,273 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++  With parts from the musl C library
++  Copyright 2005-2014 Rich Felker, et al.
++
++  systemd 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.
++
++  systemd 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 systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <stddef.h>
++#include <string.h>
++
++#include "parse-printf-format.h"
++
++static const char *consume_nonarg(const char *fmt)
++{
++        do {
++                if (*fmt == '\0')
++                        return fmt;
++        } while (*fmt++ != '%');
++        return fmt;
++}
++
++static const char *consume_num(const char *fmt)
++{
++        for (;*fmt >= '0' && *fmt <= '9'; fmt++)
++                /* do nothing */;
++        return fmt;
++}
++
++static const char *consume_argn(const char *fmt, size_t *arg)
++{
++        const char *p = fmt;
++        size_t val = 0;
++
++        if (*p < '1' || *p > '9')
++                return fmt;
++        do {
++                val = 10*val + (*p++ - '0');
++        } while (*p >= '0' && *p <= '9');
++
++        if (*p != '$')
++                return fmt;
++        *arg = val;
++        return p+1;
++}
++
++static const char *consume_flags(const char *fmt)
++{
++        while (1) {
++                switch (*fmt) {
++                case '#':
++                case '0':
++                case '-':
++                case ' ':
++                case '+':
++                case '\'':
++                case 'I':
++                        fmt++;
++                        continue;
++                }
++                return fmt;
++        }
++}
++
++enum state {
++        BARE,
++        LPRE,
++        LLPRE,
++        HPRE,
++        HHPRE,
++        BIGLPRE,
++        ZTPRE,
++        JPRE,
++        STOP
++};
++
++enum type {
++        NONE,
++        PTR,
++        INT,
++        UINT,
++        ULLONG,
++        LONG,
++        ULONG,
++        SHORT,
++        USHORT,
++        CHAR,
++        UCHAR,
++        LLONG,
++        SIZET,
++        IMAX,
++        UMAX,
++        PDIFF,
++        UIPTR,
++        DBL,
++        LDBL,
++        MAXTYPE
++};
++
++static const short pa_types[MAXTYPE] = {
++        [NONE]   = PA_INT,
++        [PTR]    = PA_POINTER,
++        [INT]    = PA_INT,
++        [UINT]   = PA_INT,
++        [ULLONG] = PA_INT | PA_FLAG_LONG_LONG,
++        [LONG]   = PA_INT | PA_FLAG_LONG,
++        [ULONG]  = PA_INT | PA_FLAG_LONG,
++        [SHORT]  = PA_INT | PA_FLAG_SHORT,
++        [USHORT] = PA_INT | PA_FLAG_SHORT,
++        [CHAR]   = PA_CHAR,
++        [UCHAR]  = PA_CHAR,
++        [LLONG]  = PA_INT | PA_FLAG_LONG_LONG,
++        [SIZET]  = PA_INT | PA_FLAG_LONG,
++        [IMAX]   = PA_INT | PA_FLAG_LONG_LONG,
++        [UMAX]   = PA_INT | PA_FLAG_LONG_LONG,
++        [PDIFF]  = PA_INT | PA_FLAG_LONG_LONG,
++        [UIPTR]  = PA_INT | PA_FLAG_LONG,
++        [DBL]    = PA_DOUBLE,
++        [LDBL]   = PA_DOUBLE | PA_FLAG_LONG_DOUBLE
++};
++
++#define S(x) [(x)-'A']
++#define E(x) (STOP + (x))
++
++static const unsigned char states[]['z'-'A'+1] = {
++        { /* 0: bare types */
++                S('d') = E(INT), S('i') = E(INT),
++                S('o') = E(UINT),S('u') = E(UINT),S('x') = E(UINT), S('X') = E(UINT),
++                S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL),  S('a') = E(DBL),
++                S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL),  S('A') = E(DBL),
++                S('c') = E(CHAR),S('C') = E(INT),
++                S('s') = E(PTR), S('S') = E(PTR), S('p') = E(UIPTR),S('n') = E(PTR),
++                S('m') = E(NONE),
++                S('l') = LPRE,   S('h') = HPRE, S('L') = BIGLPRE,
++                S('z') = ZTPRE,  S('j') = JPRE, S('t') = ZTPRE
++        }, { /* 1: l-prefixed */
++                S('d') = E(LONG), S('i') = E(LONG),
++                S('o') = E(ULONG),S('u') = E(ULONG),S('x') = E(ULONG),S('X') = E(ULONG),
++                S('e') = E(DBL),  S('f') = E(DBL),  S('g') = E(DBL),  S('a') = E(DBL),
++                S('E') = E(DBL),  S('F') = E(DBL),  S('G') = E(DBL),  S('A') = E(DBL),
++                S('c') = E(INT),  S('s') = E(PTR),  S('n') = E(PTR),
++                S('l') = LLPRE
++        }, { /* 2: ll-prefixed */
++                S('d') = E(LLONG), S('i') = E(LLONG),
++                S('o') = E(ULLONG),S('u') = E(ULLONG),
++                S('x') = E(ULLONG),S('X') = E(ULLONG),
++                S('n') = E(PTR)
++        }, { /* 3: h-prefixed */
++                S('d') = E(SHORT), S('i') = E(SHORT),
++                S('o') = E(USHORT),S('u') = E(USHORT),
++                S('x') = E(USHORT),S('X') = E(USHORT),
++                S('n') = E(PTR),
++                S('h') = HHPRE
++        }, { /* 4: hh-prefixed */
++                S('d') = E(CHAR), S('i') = E(CHAR),
++                S('o') = E(UCHAR),S('u') = E(UCHAR),
++                S('x') = E(UCHAR),S('X') = E(UCHAR),
++                S('n') = E(PTR)
++        }, { /* 5: L-prefixed */
++                S('e') = E(LDBL),S('f') = E(LDBL),S('g') = E(LDBL), S('a') = E(LDBL),
++                S('E') = E(LDBL),S('F') = E(LDBL),S('G') = E(LDBL), S('A') = E(LDBL),
++                S('n') = E(PTR)
++        }, { /* 6: z- or t-prefixed (assumed to be same size) */
++                S('d') = E(PDIFF),S('i') = E(PDIFF),
++                S('o') = E(SIZET),S('u') = E(SIZET),
++                S('x') = E(SIZET),S('X') = E(SIZET),
++                S('n') = E(PTR)
++        }, { /* 7: j-prefixed */
++                S('d') = E(IMAX), S('i') = E(IMAX),
++                S('o') = E(UMAX), S('u') = E(UMAX),
++                S('x') = E(UMAX), S('X') = E(UMAX),
++                S('n') = E(PTR)
++        }
++};
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types)
++{
++        size_t i = 0;
++        size_t last = 0;
++
++        memset(types, 0, n);
++
++        while (1) {
++                size_t arg;
++                unsigned int state;
++
++                fmt = consume_nonarg(fmt);
++                if (*fmt == '\0')
++                        break;
++                if (*fmt == '%') {
++                        fmt++;
++                        continue;
++                }
++                arg = 0;
++                fmt = consume_argn(fmt, &arg);
++                /* flags */
++                fmt = consume_flags(fmt);
++                /* width */
++                if (*fmt == '*') {
++                        size_t warg = 0;
++                        fmt = consume_argn(fmt+1, &warg);
++                        if (warg == 0)
++                                warg = ++i;
++                        if (warg > last)
++                                last = warg;
++                        if (warg <= n && types[warg-1] == NONE)
++                                types[warg-1] = INT;
++                } else
++                        fmt = consume_num(fmt);
++                /* precision */
++                if (*fmt == '.') {
++                        fmt++;
++                        if (*fmt == '*') {
++                                size_t parg = 0;
++                                fmt = consume_argn(fmt+1, &parg);
++                                if (parg == 0)
++                                        parg = ++i;
++                                if (parg > last)
++                                        last = parg;
++                                if (parg <= n && types[parg-1] == NONE)
++                                        types[parg-1] = INT;
++                        } else {
++                                if (*fmt == '-')
++                                        fmt++;
++                                fmt = consume_num(fmt);
++                        }
++                }
++                /* length modifier and conversion specifier */
++                state = BARE;
++                do {
++                        unsigned char c = *fmt++;
++
++                        if (c < 'A' || c > 'z')
++                                continue;
++                        state = states[state]S(c);
++                        if (state == 0)
++                                continue;
++                } while (state < STOP);
++
++                if (state == E(NONE))
++                        continue;
++
++                if (arg == 0)
++                        arg = ++i;
++                if (arg > last)
++                        last = arg;
++                if (arg <= n)
++                        types[arg-1] = state - STOP;
++        }
++
++        if (last > n)
++                last = n;
++        for (i = 0; i < last; i++)
++                types[i] = pa_types[types[i]];
++
++        return last;
++}
+diff --git a/src/basic/parse-printf-format.h b/src/basic/parse-printf-format.h
+new file mode 100644
+index 0000000000..47be7522d7
+--- /dev/null
++++ b/src/basic/parse-printf-format.h
+@@ -0,0 +1,57 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++  With parts from the GNU C Library
++  Copyright 1991-2014 Free Software Foundation, Inc.
++
++  systemd 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.
++
++  systemd 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 systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#pragma once
++
++#include "config.h"
++
++#if HAVE_PRINTF_H
++#include <printf.h>
++#else
++
++#include <stddef.h>
++
++enum {				/* C type: */
++  PA_INT,			/* int */
++  PA_CHAR,			/* int, cast to char */
++  PA_WCHAR,			/* wide char */
++  PA_STRING,			/* const char *, a '\0'-terminated string */
++  PA_WSTRING,			/* const wchar_t *, wide character string */
++  PA_POINTER,			/* void * */
++  PA_FLOAT,			/* float */
++  PA_DOUBLE,			/* double */
++  PA_LAST
++};
++
++/* Flag bits that can be set in a type returned by `parse_printf_format'.  */
++#define	PA_FLAG_MASK		0xff00
++#define	PA_FLAG_LONG_LONG	(1 << 8)
++#define	PA_FLAG_LONG_DOUBLE	PA_FLAG_LONG_LONG
++#define	PA_FLAG_LONG		(1 << 9)
++#define	PA_FLAG_SHORT		(1 << 10)
++#define	PA_FLAG_PTR		(1 << 11)
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types);
++
++#endif /* HAVE_PRINTF_H */
+diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
+index c3b9448d4f..2937aa13b1 100644
+--- a/src/basic/stdio-util.h
++++ b/src/basic/stdio-util.h
+@@ -1,13 +1,13 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+ 
+-#include <printf.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+ 
+ #include "macro.h"
+ #include "memory-util.h"
++#include "parse-printf-format.h"
+ 
+ #define snprintf_ok(buf, len, fmt, ...) \
+         ((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len))
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index 5ef11fa1a4..6384ab620c 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -2,7 +2,6 @@
+ 
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <printf.h>
+ #include <stddef.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+@@ -21,6 +20,7 @@
+ #include "stdio-util.h"
+ #include "string-util.h"
+ #include "tmpfile-util.h"
++#include "parse-printf-format.h"
+ 
+ #define SNDBUF_SIZE (8*1024*1024)
+ 
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
new file mode 100644
index 0000000..0f75e8c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
@@ -0,0 +1,54 @@
+Handle __cpu_mask usage
+
+Fixes errors:
+
+src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
+src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
+
+__cpu_mask is an internal type of glibc's cpu_set implementation, not
+part of the POSIX definition, which is problematic when building with
+musl, which does not define a matching type.  From inspection of musl's
+sched.h, however, it is clear that the corresponding type would be
+unsigned long, which does match glibc's actual __CPU_MASK_TYPE.  So,
+add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/shared/cpu-set-util.h | 2 ++
+ src/test/test-sizeof.c    | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
+index 27812dfd59..f698f9df83 100644
+--- a/src/shared/cpu-set-util.h
++++ b/src/shared/cpu-set-util.h
+@@ -6,6 +6,8 @@
+ #include "macro.h"
+ #include "missing_syscall.h"
+ 
++typedef unsigned long __cpu_mask;
++
+ /* This wraps the libc interface with a variable to keep the allocated size. */
+ typedef struct CPUSet {
+         cpu_set_t *set;
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index a710db5370..d1601ad929 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -1,6 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
+-#include <sched.h>
+ #include <stdio.h>
+ #include <string.h>
+ 
+@@ -8,6 +7,7 @@
+ #include <float.h>
+ 
+ #include "time-util.h"
++#include "cpu-set-util.h"
+ 
+ /* Print information about various types. Useful when diagnosing
+  * gcc diagnostics on an unfamiliar architecture. */
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch
new file mode 100644
index 0000000..adfc3b7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -0,0 +1,442 @@
+From 399fd3eda3045636a70da438a0fd1406cc332ed1 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:18:21 +0800
+Subject: [PATCH 05/24] src/basic/missing.h: check for missing strndupa
+
+include missing.h  for definition of strndupa
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ meson.build                                |  1 +
+ src/backlight/backlight.c                  |  1 +
+ src/basic/env-util.c                       |  1 +
+ src/basic/missing_stdlib.h                 | 12 ++++++++++++
+ src/basic/mkdir.c                          |  1 +
+ src/basic/parse-util.c                     |  1 +
+ src/basic/proc-cmdline.c                   |  1 +
+ src/basic/procfs-util.c                    |  1 +
+ src/basic/time-util.c                      |  1 +
+ src/core/dbus-cgroup.c                     |  1 +
+ src/core/dbus-util.c                       |  1 +
+ src/core/kmod-setup.c                      |  1 +
+ src/core/service.c                         |  1 +
+ src/journal/journalctl.c                   |  1 +
+ src/libsystemd/sd-bus/bus-message.c        |  1 +
+ src/libsystemd/sd-bus/bus-objects.c        |  1 +
+ src/libsystemd/sd-bus/test-bus-benchmark.c |  1 +
+ src/locale/keymap-util.c                   |  1 +
+ src/login/pam_systemd.c                    |  1 +
+ src/network/generator/network-generator.c  |  1 +
+ src/nspawn/nspawn-settings.c               |  1 +
+ src/shared/dns-domain.c                    |  1 +
+ src/shared/journal-importer.c              |  1 +
+ src/shared/logs-show.c                     |  1 +
+ src/shared/pager.c                         |  1 +
+ src/shared/path-lookup.c                   |  1 +
+ src/shared/uid-range.c                     |  1 +
+ src/socket-proxy/socket-proxyd.c           |  1 +
+ src/test/test-hexdecoct.c                  |  1 +
+ src/udev/udev-builtin-path_id.c            |  1 +
+ src/udev/udev-event.c                      |  1 +
+ src/udev/udev-rules.c                      |  1 +
+ 32 files changed, 43 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index 7f8c679411..81c061b768 100644
+--- a/meson.build
++++ b/meson.build
+@@ -506,6 +506,7 @@ foreach ident : [
+                                  #include <unistd.h>'''],
+         ['get_mempolicy',     '''#include <stdlib.h>
+                                  #include <unistd.h>'''],
++        ['strndupa' ,         '''#include <string.h>'''],
+ ]
+ 
+         have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index dfd6805398..c2b2ace6ec 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -17,6 +17,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ static int find_pci_or_platform_parent(sd_device *device, sd_device **ret) {
+         const char *subsystem, *sysname, *value;
+diff --git a/src/basic/env-util.c b/src/basic/env-util.c
+index a6503cf2b6..ceef9a62c8 100644
+--- a/src/basic/env-util.c
++++ b/src/basic/env-util.c
+@@ -16,6 +16,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "utf8.h"
++#include "missing.h"
+ 
+ #define VALID_CHARS_ENV_NAME                    \
+         DIGITS LETTERS                          \
+diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
+index 188a8d4406..1e16ec287a 100644
+--- a/src/basic/missing_stdlib.h
++++ b/src/basic/missing_stdlib.h
+@@ -11,3 +11,15 @@
+ #    error "neither secure_getenv nor __secure_getenv are available"
+ #  endif
+ #endif
++
++/* string.h */
++#if ! HAVE_STRNDUPA
++#define strndupa(s, n) \
++  ({ \
++    const char *__old = (s); \
++    size_t __len = strnlen(__old, (n)); \
++    char *__new = (char *)alloca(__len + 1); \
++    __new[__len] = '\0'; \
++    (char *)memcpy(__new, __old, __len); \
++  })
++#endif
+diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
+index 6b82eab640..51c6b78615 100644
+--- a/src/basic/mkdir.c
++++ b/src/basic/mkdir.c
+@@ -14,6 +14,7 @@
+ #include "stat-util.h"
+ #include "stdio-util.h"
+ #include "user-util.h"
++#include "missing.h"
+ 
+ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir) {
+         struct stat st;
+diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
+index 115a1494a2..07a34bfd53 100644
+--- a/src/basic/parse-util.c
++++ b/src/basic/parse-util.c
+@@ -20,6 +20,7 @@
+ #include "process-util.h"
+ #include "stat-util.h"
+ #include "string-util.h"
++#include "missing.h"
+ 
+ int parse_boolean(const char *v) {
+         if (!v)
+diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
+index 09169cf963..f411ba897f 100644
+--- a/src/basic/proc-cmdline.c
++++ b/src/basic/proc-cmdline.c
+@@ -15,6 +15,7 @@
+ #include "string-util.h"
+ #include "util.h"
+ #include "virt.h"
++#include "missing.h"
+ 
+ int proc_cmdline(char **ret) {
+         const char *e;
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index 7aaf95bfce..42ce53d5aa 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -11,6 +11,7 @@
+ #include "procfs-util.h"
+ #include "stdio-util.h"
+ #include "string-util.h"
++#include "missing.h"
+ 
+ int procfs_tasks_get_limit(uint64_t *ret) {
+         _cleanup_free_ char *value = NULL;
+diff --git a/src/basic/time-util.c b/src/basic/time-util.c
+index 3018e81acb..4e2b3b66c1 100644
+--- a/src/basic/time-util.c
++++ b/src/basic/time-util.c
+@@ -28,6 +28,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "time-util.h"
++#include "missing.h"
+ 
+ static clockid_t map_clock_id(clockid_t c) {
+ 
+diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
+index 2f2313c599..c9937f9d62 100644
+--- a/src/core/dbus-cgroup.c
++++ b/src/core/dbus-cgroup.c
+@@ -15,6 +15,7 @@
+ #include "fileio.h"
+ #include "limits-util.h"
+ #include "path-util.h"
++#include "missing.h"
+ 
+ static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_cgroup_device_policy, cgroup_device_policy, CGroupDevicePolicy);
+ 
+diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
+index 7862beaacb..19f6968cfe 100644
+--- a/src/core/dbus-util.c
++++ b/src/core/dbus-util.c
+@@ -7,6 +7,7 @@
+ #include "unit-printf.h"
+ #include "user-util.h"
+ #include "unit.h"
++#include "missing.h"
+ 
+ int bus_property_get_triggered_unit(
+                 sd_bus *bus,
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index a91cfebc67..a45961013f 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -11,6 +11,7 @@
+ #include "kmod-setup.h"
+ #include "macro.h"
+ #include "string-util.h"
++#include "missing.h"
+ 
+ #if HAVE_KMOD
+ #include <libkmod.h>
+diff --git a/src/core/service.c b/src/core/service.c
+index 73b3c9c316..ef74f00a08 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -43,6 +43,7 @@
+ #include "unit.h"
+ #include "utf8.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
+         [SERVICE_DEAD] = UNIT_INACTIVE,
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 6d6bb1cf63..6666349a35 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -70,6 +70,7 @@
+ #include "unit-name.h"
+ #include "user-util.h"
+ #include "varlink.h"
++#include "missing.h"
+ 
+ #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
+ 
+diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
+index eb029e4453..f31fe9d5a8 100644
+--- a/src/libsystemd/sd-bus/bus-message.c
++++ b/src/libsystemd/sd-bus/bus-message.c
+@@ -21,6 +21,7 @@
+ #include "strv.h"
+ #include "time-util.h"
+ #include "utf8.h"
++#include "missing.h"
+ 
+ static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
+ 
+diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
+index ae643cacc7..1b752271a5 100644
+--- a/src/libsystemd/sd-bus/bus-objects.c
++++ b/src/libsystemd/sd-bus/bus-objects.c
+@@ -13,6 +13,7 @@
+ #include "set.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing.h"
+ 
+ static int node_vtable_get_userdata(
+                 sd_bus *bus,
+diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
+index 8de0a859ee..4fd0a2e692 100644
+--- a/src/libsystemd/sd-bus/test-bus-benchmark.c
++++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
+@@ -14,6 +14,7 @@
+ #include "missing_resource.h"
+ #include "time-util.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ #define MAX_SIZE (2*1024*1024)
+ 
+diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
+index f8c36c94f5..41f5606aea 100644
+--- a/src/locale/keymap-util.c
++++ b/src/locale/keymap-util.c
+@@ -22,6 +22,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "tmpfile-util.h"
++#include "missing.h"
+ 
+ static bool startswith_comma(const char *s, const char *prefix) {
+         s = startswith(s, prefix);
+diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
+index 3f762cbbc3..005cfea658 100644
+--- a/src/login/pam_systemd.c
++++ b/src/login/pam_systemd.c
+@@ -28,6 +28,7 @@
+ #include "hostname-util.h"
+ #include "login-util.h"
+ #include "macro.h"
++#include "missing.h"
+ #include "parse-util.h"
+ #include "path-util.h"
+ #include "process-util.h"
+diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
+index 0b5af33566..9c808cd014 100644
+--- a/src/network/generator/network-generator.c
++++ b/src/network/generator/network-generator.c
+@@ -13,6 +13,7 @@
+ #include "string-table.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing.h"
+ 
+ /*
+   # .network
+diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
+index 3a99736813..279fea4d88 100644
+--- a/src/nspawn/nspawn-settings.c
++++ b/src/nspawn/nspawn-settings.c
+@@ -16,6 +16,7 @@
+ #include "strv.h"
+ #include "user-util.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ Settings *settings_new(void) {
+         Settings *s;
+diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
+index f62ad0a0f5..f1a27e158d 100644
+--- a/src/shared/dns-domain.c
++++ b/src/shared/dns-domain.c
+@@ -24,6 +24,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "utf8.h"
++#include "missing.h"
+ 
+ int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
+         const char *n;
+diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
+index 7c4fc7021d..a6ff2214df 100644
+--- a/src/shared/journal-importer.c
++++ b/src/shared/journal-importer.c
+@@ -14,6 +14,7 @@
+ #include "parse-util.h"
+ #include "string-util.h"
+ #include "unaligned.h"
++#include "missing.h"
+ 
+ enum {
+         IMPORTER_STATE_LINE = 0,    /* waiting to read, or reading line */
+diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
+index b615c70dff..75b26e9c21 100644
+--- a/src/shared/logs-show.c
++++ b/src/shared/logs-show.c
+@@ -39,6 +39,7 @@
+ #include "time-util.h"
+ #include "utf8.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
+ #define PRINT_LINE_THRESHOLD 3
+diff --git a/src/shared/pager.c b/src/shared/pager.c
+index 7c20b100b4..e4209d3a95 100644
+--- a/src/shared/pager.c
++++ b/src/shared/pager.c
+@@ -25,6 +25,7 @@
+ #include "strv.h"
+ #include "terminal-util.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ static pid_t pager_pid = 0;
+ 
+diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
+index 6bf0ff0316..f6c8009cd2 100644
+--- a/src/shared/path-lookup.c
++++ b/src/shared/path-lookup.c
+@@ -20,6 +20,7 @@
+ #include "tmpfile-util.h"
+ #include "user-util.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ int xdg_user_runtime_dir(char **ret, const char *suffix) {
+         const char *e;
+diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
+index 7cb7d8a477..8b12b91084 100644
+--- a/src/shared/uid-range.c
++++ b/src/shared/uid-range.c
+@@ -9,6 +9,7 @@
+ #include "sort-util.h"
+ #include "uid-range.h"
+ #include "user-util.h"
++#include "missing.h"
+ 
+ static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
+         assert(range);
+diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
+index abbbc9f2d6..6179b5851e 100644
+--- a/src/socket-proxy/socket-proxyd.c
++++ b/src/socket-proxy/socket-proxyd.c
+@@ -28,6 +28,7 @@
+ #include "socket-util.h"
+ #include "string-util.h"
+ #include "util.h"
++#include "missing.h"
+ 
+ #define BUFFER_SIZE (256 * 1024)
+ 
+diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
+index 52217429b1..a05e7782f6 100644
+--- a/src/test/test-hexdecoct.c
++++ b/src/test/test-hexdecoct.c
+@@ -6,6 +6,7 @@
+ #include "hexdecoct.h"
+ #include "macro.h"
+ #include "string-util.h"
++#include "missing.h"
+ 
+ static void test_hexchar(void) {
+         assert_se(hexchar(0xa) == 'a');
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index e8f1ce1354..8693cb02a4 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -23,6 +23,7 @@
+ #include "strv.h"
+ #include "sysexits.h"
+ #include "udev-builtin.h"
++#include "missing.h"
+ 
+ _printf_(2,3)
+ static void path_prepend(char **path, const char *fmt, ...) {
+diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
+index 8cfa2cdf23..b0670c77ec 100644
+--- a/src/udev/udev-event.c
++++ b/src/udev/udev-event.c
+@@ -35,6 +35,7 @@
+ #include "udev-util.h"
+ #include "udev-watch.h"
+ #include "user-util.h"
++#include "missing.h"
+ 
+ typedef struct Spawn {
+         sd_device *device;
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 1642f10535..fe2aa75478 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -28,6 +28,7 @@
+ #include "udev-event.h"
+ #include "udev-rules.h"
+ #include "user-util.h"
++#include "missing.h"
+ 
+ #define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d")
+ 
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch
new file mode 100644
index 0000000..6d73d71
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch
@@ -0,0 +1,227 @@
+Include netinet/if_ether.h
+
+Fixes
+/path/to/systemd/recipe-sysroot/usr/include/netinet/if_ether.h:101:8: error: redefinition of 'struct ethhdr'
+ struct ethhdr {
+        ^~~~~~
+
+and related arphdr, arpreq, and arpreq_old errors
+/path/to/systemd/recipe-sysroot/usr/include/net/if_arp.h:22:8: error: redefinition of 'struct arphdr'
+ struct arphdr {
+        ^~~~~~
+
+The latter requires removing some includes of net/if_arp.h to avoid
+conflicting with netinet/if_ether.h.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/libsystemd-network/sd-dhcp6-client.c  | 1 -
+ src/libsystemd/sd-netlink/netlink-types.c | 1 +
+ src/machine/machine-dbus.c                | 1 +
+ src/network/netdev/macsec.c               | 1 +
+ src/network/netdev/netdev.c               | 1 +
+ src/network/networkd-brvlan.c             | 1 +
+ src/network/networkd-dhcp-common.c        | 1 +
+ src/network/networkd-dhcp4.c              | 2 +-
+ src/network/networkd-dhcp6.c              | 2 +-
+ src/network/networkd-link.c               | 2 +-
+ src/network/networkd-network.c            | 1 +
+ src/shared/ethtool-util.c                 | 1 +
+ src/shared/ethtool-util.h                 | 1 +
+ src/udev/net/link-config.c                | 1 +
+ src/udev/udev-builtin-net_setup_link.c    | 1 +
+ 15 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
+index d7a5349c70..68b41dfb6c 100644
+--- a/src/libsystemd-network/sd-dhcp6-client.c
++++ b/src/libsystemd-network/sd-dhcp6-client.c
+@@ -6,7 +6,6 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+-#include <linux/if_arp.h>
+ #include <linux/if_infiniband.h>
+ 
+ #include "sd-dhcp6-client.h"
+diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
+index de9b8b21ab..f64f6500f7 100644
+--- a/src/libsystemd/sd-netlink/netlink-types.c
++++ b/src/libsystemd/sd-netlink/netlink-types.c
+@@ -3,6 +3,7 @@
+ #include <netinet/in.h>
+ #include <stdint.h>
+ #include <sys/socket.h>
++#include <netinet/if_ether.h>
+ #include <linux/can/vxcan.h>
+ #include <linux/netlink.h>
+ #include <linux/rtnetlink.h>
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index 0d58b5eb8b..01093c1f62 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -4,6 +4,7 @@
+ #include <string.h>
+ #include <sys/mount.h>
+ #include <sys/wait.h>
++#include <netinet/if_ether.h>
+ 
+ /* When we include libgen.h because we need dirname() we immediately
+  * undefine basename() since libgen.h defines it as a macro to the POSIX
+diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
+index cf281e75a6..269dc618ff 100644
+--- a/src/network/netdev/macsec.c
++++ b/src/network/netdev/macsec.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_macsec.h>
+diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
+index 7735b455b7..ed4eda4a44 100644
+--- a/src/network/netdev/netdev.c
++++ b/src/network/netdev/netdev.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ 
+diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c
+index c3c5d535ac..ebea408c89 100644
+--- a/src/network/networkd-brvlan.c
++++ b/src/network/networkd-brvlan.c
+@@ -4,6 +4,7 @@
+ ***/
+ 
+ #include <netinet/in.h>
++#include <netinet/if_ether.h>
+ #include <linux/if_bridge.h>
+ #include <stdbool.h>
+ 
+diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
+index 626b975839..42fe92f320 100644
+--- a/src/network/networkd-dhcp-common.c
++++ b/src/network/networkd-dhcp-common.c
+@@ -1,6 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
+ #include "networkd-dhcp-common.h"
++#include <netinet/if_ether.h>
+ #include "networkd-network.h"
+ #include "parse-util.h"
+ #include "string-table.h"
+diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
+index 662770b50e..c6ab62a94d 100644
+--- a/src/network/networkd-dhcp4.c
++++ b/src/network/networkd-dhcp4.c
+@@ -1,8 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+ 
+ #include "alloc-util.h"
+ #include "hostname-util.h"
+diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
+index 8ad736a82b..f41b4d834e 100644
+--- a/src/network/networkd-dhcp6.c
++++ b/src/network/networkd-dhcp6.c
+@@ -3,9 +3,9 @@
+   Copyright © 2014 Intel Corporation. All rights reserved.
+ ***/
+ 
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+ #include "sd-radv.h"
+ 
+ #include "sd-dhcp6-client.h"
+diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
+index f5bb78890a..f13a36b791 100644
+--- a/src/network/networkd-link.c
++++ b/src/network/networkd-link.c
+@@ -1,8 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+ #include <unistd.h>
+ 
+ #include "alloc-util.h"
+diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
+index 2b8d0eb2fb..2f79ef25cd 100644
+--- a/src/network/networkd-network.c
++++ b/src/network/networkd-network.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <linux/netdevice.h>
+diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c
+index b0961df72e..53fcbbd84b 100644
+--- a/src/shared/ethtool-util.c
++++ b/src/shared/ethtool-util.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <net/if.h>
+ #include <sys/ioctl.h>
+ #include <linux/ethtool.h>
+diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h
+index 8b32b243f3..262b819976 100644
+--- a/src/shared/ethtool-util.h
++++ b/src/shared/ethtool-util.h
+@@ -2,6 +2,7 @@
+ #pragma once
+ 
+ #include <macro.h>
++#include <netinet/if_ether.h>
+ #include <linux/ethtool.h>
+ 
+ #include "conf-parser.h"
+diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
+index d44af64d5e..fd052f1591 100644
+--- a/src/udev/net/link-config.c
++++ b/src/udev/net/link-config.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include <linux/netdevice.h>
+ #include <netinet/ether.h>
+ 
+diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
+index ee3ca9fa38..9aa4e82874 100644
+--- a/src/udev/udev-builtin-net_setup_link.c
++++ b/src/udev/udev-builtin-net_setup_link.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ 
++#include <netinet/if_ether.h>
+ #include "device-util.h"
+ #include "alloc-util.h"
+ #include "link-config.h"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch
new file mode 100644
index 0000000..34f7f5f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch
@@ -0,0 +1,153 @@
+From f8a239b182158ca0a537ba053cb0e6bad9c3a2fb Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:56:21 +0800
+Subject: [PATCH 07/24] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not 
+ defined
+
+If the standard library doesn't provide brace
+expansion users just won't get it.
+
+Dont use GNU GLOB extentions on non-glibc systems
+
+Conditionalize use of GLOB_ALTDIRFUNC
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/glob-util.c     | 12 ++++++++++++
+ src/test/test-glob-util.c | 16 ++++++++++++++++
+ src/tmpfiles/tmpfiles.c   | 10 ++++++++++
+ 3 files changed, 38 insertions(+)
+
+diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
+index b335af8d97..2cdfc11f16 100644
+--- a/src/basic/glob-util.c
++++ b/src/basic/glob-util.c
+@@ -14,6 +14,12 @@
+ #include "path-util.h"
+ #include "strv.h"
+ 
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void closedir_wrapper(void* v) {
+         (void) closedir(v);
+ }
+@@ -21,6 +27,7 @@ static void closedir_wrapper(void* v) {
+ int safe_glob(const char *path, int flags, glob_t *pglob) {
+         int k;
+ 
++#ifdef GLOB_ALTDIRFUNC
+         /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
+         assert(!(flags & GLOB_ALTDIRFUNC));
+ 
+@@ -34,9 +41,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
+                 pglob->gl_lstat = lstat;
+         if (!pglob->gl_stat)
+                 pglob->gl_stat = stat;
++#endif
+ 
+         errno = 0;
++#ifdef GLOB_ALTDIRFUNC
+         k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
++#else
++        k = glob(path, flags, NULL, pglob);
++#endif
+         if (k == GLOB_NOMATCH)
+                 return -ENOENT;
+         if (k == GLOB_NOSPACE)
+diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
+index b4f41445fe..f0d474ed14 100644
+--- a/src/test/test-glob-util.c
++++ b/src/test/test-glob-util.c
+@@ -13,6 +13,12 @@
+ #include "rm-rf.h"
+ #include "tmpfile-util.h"
+ 
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void test_glob_exists(void) {
+         char name[] = "/tmp/test-glob_exists.XXXXXX";
+         int fd = -1;
+@@ -40,11 +46,13 @@ static void test_glob_no_dot(void) {
+         const char *fn;
+ 
+         _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+                 .gl_closedir = closedir_wrapper,
+                 .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
+                 .gl_opendir = (void *(*)(const char *)) opendir,
+                 .gl_lstat = lstat,
+                 .gl_stat = stat,
++#endif
+         };
+ 
+         int r;
+@@ -52,11 +60,19 @@ static void test_glob_no_dot(void) {
+         assert_se(mkdtemp(template));
+ 
+         fn = strjoina(template, "/*");
++#ifdef GLOB_ALTDIRFUNC
+         r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++        r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+         assert_se(r == GLOB_NOMATCH);
+ 
+         fn = strjoina(template, "/.*");
++#ifdef GLOB_ALTDIRFUNC
+         r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++        r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+         assert_se(r == GLOB_NOMATCH);
+ 
+         (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 3c30612af1..14bc428085 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -63,6 +63,12 @@
+ #include "umask-util.h"
+ #include "user-util.h"
+ 
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
+  * them in the file system. This is intended to be used to create
+  * properly owned directories beneath /tmp, /var/tmp, /run, which are
+@@ -1853,7 +1859,9 @@ finish:
+ 
+ static int glob_item(Item *i, action_t action) {
+         _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+                 .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+         };
+         int r = 0, k;
+         char **fn;
+@@ -1873,7 +1881,9 @@ static int glob_item(Item *i, action_t action) {
+ 
+ static int glob_item_recursively(Item *i, fdaction_t action) {
+         _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+                 .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+         };
+         int r = 0, k;
+         char **fn;
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch
new file mode 100644
index 0000000..d5f2349
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch
@@ -0,0 +1,47 @@
+From 6cd17c753d2c0a90fc791f69bbc694cbc8556a4f Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:00:06 +0800
+Subject: [PATCH 08/24] add missing FTW_ macros for musl
+
+This is to avoid build failures like below for musl.
+
+  locale-util.c:296:24: error: 'FTW_STOP' undeclared
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_type.h | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index c487e65..23602eb 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -19,3 +19,23 @@ typedef int (*comparison_fn_t)(const void *, const void *);
+ #define __COMPAR_FN_T
+ typedef int (*__compar_fn_t)(const void *, const void *);
+ #endif
++
++#ifndef FTW_ACTIONRETVAL
++#define FTW_ACTIONRETVAL 16
++#endif
++
++#ifndef FTW_CONTINUE
++#define FTW_CONTINUE 0
++#endif
++
++#ifndef FTW_STOP
++#define FTW_STOP 1
++#endif
++
++#ifndef FTW_SKIP_SUBTREE
++#define FTW_SKIP_SUBTREE 2
++#endif
++
++#ifndef FTW_SKIP_SIBLINGS
++#define FTW_SKIP_SIBLINGS 3
++#endif
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
new file mode 100644
index 0000000..8bacd02
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
@@ -0,0 +1,45 @@
+From f1f4b4f9684fed185bfa8b9ed409cdf241657e99 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:03:47 +0800
+Subject: [PATCH 10/24] fix missing of __register_atfork for non-glibc builds
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/process-util.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index 78ce43b..aec2daf 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -22,6 +22,9 @@
+ #if HAVE_VALGRIND_VALGRIND_H
+ #include <valgrind/valgrind.h>
+ #endif
++#ifndef __GLIBC__
++#include <pthread.h>
++#endif
+ 
+ #include "alloc-util.h"
+ #include "architecture.h"
+@@ -1160,11 +1163,15 @@ 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_;
++#else
++#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child)
++#endif
+ 
+ pid_t getpid_cached(void) {
+         static bool installed = false;
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch
new file mode 100644
index 0000000..d6eda9c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch
@@ -0,0 +1,97 @@
+From e3f847bd0338d27aff3335b42661d8a4b66b965e Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:12:41 +0800
+Subject: [PATCH 11/24] Use uintmax_t for handling rlim_t
+
+PRIu{32,64} is not right format to represent rlim_t type
+therefore use %ju and typecast the rlim_t variables to
+uintmax_t.
+
+Fixes portablility errors like
+
+execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
+|                          fprintf(f, "%s%s: " RLIM_FMT "\n",
+|                                     ^~~~~~~~
+|                                  prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
+|                                                               ~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/format-util.h |  8 +-------
+ src/basic/rlimit-util.c | 10 +++++-----
+ src/core/execute.c      |  4 ++--
+ 3 files changed, 8 insertions(+), 14 deletions(-)
+
+diff --git a/src/basic/format-util.h b/src/basic/format-util.h
+index dece5d3..dbb87bc 100644
+--- a/src/basic/format-util.h
++++ b/src/basic/format-util.h
+@@ -42,13 +42,7 @@
+ #  define PRI_TIMEX "li"
+ #endif
+ 
+-#if SIZEOF_RLIM_T == 8
+-#  define RLIM_FMT "%" PRIu64
+-#elif SIZEOF_RLIM_T == 4
+-#  define RLIM_FMT "%" PRIu32
+-#else
+-#  error Unknown rlim_t size
+-#endif
++#define RLIM_FMT "%ju"
+ 
+ #if SIZEOF_DEV_T == 8
+ #  define DEV_FMT "%" PRIu64
+diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
+index 74b3a02..b02c03c 100644
+--- a/src/basic/rlimit-util.c
++++ b/src/basic/rlimit-util.c
+@@ -307,13 +307,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) {
+         if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
+                 s = strdup("infinity");
+         else if (rl->rlim_cur >= RLIM_INFINITY)
+-                (void) asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
++                (void) asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
+         else if (rl->rlim_max >= RLIM_INFINITY)
+-                (void) asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
++                (void) asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
+         else if (rl->rlim_cur == rl->rlim_max)
+-                (void) asprintf(&s, RLIM_FMT, rl->rlim_cur);
++                (void) asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
+         else
+-                (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
++                (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
+ 
+         if (!s)
+                 return -ENOMEM;
+@@ -404,7 +404,7 @@ int rlimit_nofile_safe(void) {
+ 
+         rl.rlim_cur = FD_SETSIZE;
+         if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
+-                return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
++                return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
+ 
+         return 1;
+ }
+diff --git a/src/core/execute.c b/src/core/execute.c
+index a708231..e2b8748 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -4220,9 +4220,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
+         for (i = 0; i < RLIM_NLIMITS; i++)
+                 if (c->rlimit[i]) {
+                         fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
+-                                prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
++                                prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
+                         fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
+-                                prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
++                                prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
+                 }
+ 
+         if (c->ioprio_set) {
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
new file mode 100644
index 0000000..914589d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
@@ -0,0 +1,42 @@
+From d3d65d4036670cbd5129fe55c09ca391286ef4b3 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 28 Feb 2018 21:25:22 -0800
+Subject: [PATCH 14/24] test-sizeof.c: Disable tests for missing typedefs in
+ musl
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/test/test-sizeof.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index 35b0876..e78e7ca 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -41,8 +41,10 @@ int main(void) {
+         info(unsigned);
+         info(long unsigned);
+         info(long long unsigned);
++#ifdef __GLIBC__
+         info(__syscall_ulong_t);
+         info(__syscall_slong_t);
++#endif
+ 
+         info(float);
+         info(double);
+@@ -60,7 +62,9 @@ int main(void) {
+         info(ssize_t);
+         info(time_t);
+         info(usec_t);
++#ifdef __GLIBC__
+         info(__time_t);
++#endif
+         info(pid_t);
+         info(uid_t);
+         info(gid_t);
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
new file mode 100644
index 0000000..fd407f6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -0,0 +1,99 @@
+From 48c628f532f6025c2d1646b6819cd81eb789d7fb Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 10 Oct 2017 14:33:30 -0700
+Subject: [PATCH 15/24] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
+
+Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
+thing to do and it's not portable (not supported by musl). See:
+
+  http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
+  http://www.openwall.com/lists/musl/2015/02/05/2
+
+Note that laccess() is never passing AT_EACCESS so a lot of the
+discussion in the links above doesn't apply. Note also that
+(currently) all systemd callers of laccess() pass mode as F_OK, so
+only check for existence of a file, not access permissions.
+Therefore, in this case, the only distiction between faccessat()
+with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
+for broken symlinks; laccess() on a broken symlink will succeed with
+(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
+
+The laccess() macros was added to systemd some time ago and it's not
+clear if or why it needs to return success for broken symlinks. Maybe
+just historical and not actually necessary or desired behaviour?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ src/basic/fs-util.h          | 22 +++++++++++++++++++++-
+ src/shared/base-filesystem.c |  6 +++---
+ 2 files changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
+index 7ad030b..d4cb1e9 100644
+--- a/src/basic/fs-util.h
++++ b/src/basic/fs-util.h
+@@ -32,7 +32,27 @@ int fchmod_opath(int fd, mode_t m);
+ 
+ int fd_warn_permissions(const char *path, int fd);
+ 
+-#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW)
++/*
++   Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
++   do and it's not portable (not supported by musl). See:
++
++     http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
++     http://www.openwall.com/lists/musl/2015/02/05/2
++
++   Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
++   the links above doesn't apply. Note also that (currently) all systemd callers
++   of laccess() pass mode as F_OK, so only check for existence of a file, not
++   access permissions. Therefore, in this case, the only distiction between
++   faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
++   behaviour for broken symlinks; laccess() on a broken symlink will succeed
++   with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
++
++   The laccess() macros was added to systemd some time ago and it's not clear if
++   or why it needs to return success for broken symlinks. Maybe just historical
++   and not actually necessary or desired behaviour?
++*/
++
++#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), 0)
+ 
+ int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
+ int touch(const char *path);
+diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
+index 89d7a7d..34b4ad5 100644
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -53,7 +53,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+                 return log_error_errno(errno, "Failed to open root file system: %m");
+ 
+         for (i = 0; i < ELEMENTSOF(table); i ++) {
+-                if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
++                if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
+                         continue;
+ 
+                 if (table[i].target) {
+@@ -61,7 +61,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+ 
+                         /* check if one of the targets exists */
+                         NULSTR_FOREACH(s, table[i].target) {
+-                                if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++                                if (faccessat(fd, s, F_OK, 0) < 0)
+                                         continue;
+ 
+                                 /* check if a specific file exists at the target path */
+@@ -72,7 +72,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+                                         if (!p)
+                                                 return log_oom();
+ 
+-                                        if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++                                        if (faccessat(fd, p, F_OK, 0) < 0)
+                                                 continue;
+                                 }
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
new file mode 100644
index 0000000..d556569
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -0,0 +1,34 @@
+From af76c973e41929360a6e021f2ff9a7fc1d7994e9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 27 May 2018 08:36:44 -0700
+Subject: [PATCH 16/24] Define glibc compatible basename() for non-glibc
+ systems
+
+Fixes builds with musl, even though systemd is adamant about
+using non-posix basename implementation, we have a way out
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/machine/machine-dbus.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index 7a558df..eca7d4b 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -11,6 +11,10 @@
+ #include <libgen.h>
+ #undef basename
+ 
++#if !defined(__GLIBC__)
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
++
+ #include "alloc-util.h"
+ #include "bus-common-errors.h"
+ #include "bus-internal.h"
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
new file mode 100644
index 0000000..24e24e8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -0,0 +1,38 @@
+From c7a4efb8bccb52e1714c151929c23e12bde59b82 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 4 Jul 2018 15:00:44 +0800
+Subject: [PATCH 17/24] Do not disable buffering when writing to oom_score_adj
+
+On musl, disabling buffering when writing to oom_score_adj will
+cause the following error.
+
+  Failed to adjust OOM setting: Invalid argument
+
+This error appears for systemd-udevd.service and dbus.service.
+This is because kernel receives '-' instead of the whole '-900'
+if buffering is disabled.
+
+This is libc implementation specific, as glibc does not have this issue.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/process-util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index b1c08fcade..0a7a1f7d89 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -1474,7 +1474,7 @@ int set_oom_score_adjust(int value) {
+         sprintf(t, "%i", value);
+ 
+         return write_string_file("/proc/self/oom_score_adj", t,
+-                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
++                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE);
+ }
+ 
+ static const char *const ioprio_class_table[] = {
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
new file mode 100644
index 0000000..5901772
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -0,0 +1,62 @@
+From fffb2810611b4a26f5c6c0958093b5b3b7d4cd99 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 10 Jul 2018 15:40:17 +0800
+Subject: [PATCH 18/24] distinguish XSI-compliant strerror_r from GNU-specifi
+ strerror_r
+
+XSI-compliant strerror_r and GNU-specifi strerror_r are different.
+
+       int strerror_r(int errnum, char *buf, size_t buflen);
+                   /* XSI-compliant */
+
+       char *strerror_r(int errnum, char *buf, size_t buflen);
+                   /* GNU-specific */
+
+We need to distinguish between them. Otherwise, we'll get an int value
+assigned to (char *) variable, resulting in segment fault.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/journal/journal-send.c        | 5 +++++
+ src/libsystemd/sd-bus/bus-error.c | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index 3fea912..4f1e592 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -337,7 +337,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
+                 char* j;
+ 
+                 errno = 0;
++#ifndef __GLIBC__
++                strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++                j = buffer + 8 + k;
++#else
+                 j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++#endif
+                 if (errno == 0) {
+                         char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
+ 
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index dc95237..bdda30f 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -379,7 +379,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
+                         return;
+ 
+                 errno = 0;
++#ifndef __GLIBC__
++                strerror_r(error, m, k);
++                x = m;
++#else
+                 x = strerror_r(error, m, k);
++#endif
+                 if (errno == ERANGE || strlen(x) >= k - 1) {
+                         free(m);
+                         k *= 2;
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
new file mode 100644
index 0000000..35cc66f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
@@ -0,0 +1,35 @@
+From 969ab9e68249fd383f4b513b1c9306bdac4ae9b2 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:18:00 +0800
+Subject: [PATCH 19/24] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP
+
+for currently unknown reasons they get exported to the shared libries
+even without being listed in the sym file
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/libsystemd/sd-bus/bus-error.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index bdda30f..e21853c 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -54,8 +54,8 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_standard_errors[] = {
+ };
+ 
+ /* GCC maps this magically to the beginning and end of the BUS_ERROR_MAP section */
+-extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[];
+-extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[];
++extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
++extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
+ 
+ /* Additional maps registered with sd_bus_error_add_map() are in this
+  * NULL terminated array */
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
new file mode 100644
index 0000000..753d511
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
@@ -0,0 +1,30 @@
+From 75c06e3e2a4760b36fffd95cdf5535b8ad73c481 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:27:54 +0800
+Subject: [PATCH 20/24] missing_type.h: add __compar_d_fn_t definition
+
+Fix the following compile failure:
+src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean '__compar_fn_t'?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_type.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index 7d7c1e4..85902ab 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -13,6 +13,7 @@
+ 
+ #ifndef __GLIBC__
+ typedef int (*comparison_fn_t)(const void *, const void *);
++typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
+ #endif
+ 
+ #ifndef __COMPAR_FN_T
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
new file mode 100644
index 0000000..cdddf83
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -0,0 +1,32 @@
+From 3fbf61d54b82fc9bf21d8039bfd89dc9efc5bbcd Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:44:54 +0800
+Subject: [PATCH 21/24] avoid redefinition of prctl_mm_map structure
+
+Fix the following compile failure:
+error: redefinition of 'struct prctl_mm_map'
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_prctl.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
+index f80cd17..47e4893 100644
+--- a/src/basic/missing_prctl.h
++++ b/src/basic/missing_prctl.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+ 
++#ifdef __GLIBC__
+ #include <linux/prctl.h>
++#endif
+ 
+ /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
+ #ifndef PR_CAP_AMBIENT
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch
new file mode 100644
index 0000000..0e5629d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch
@@ -0,0 +1,33 @@
+From 902412c271e0c5d9cb93b10ec0fb5b119b393474 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 16:53:06 +0800
+Subject: [PATCH 24/24] test-json.c: define M_PIl
+
+Fix the following compile failure:
+src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this function); did you mean 'M_PI'?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/test/test-json.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/test/test-json.c b/src/test/test-json.c
+index 9b8a2a9..efc746c 100644
+--- a/src/test/test-json.c
++++ b/src/test/test-json.c
+@@ -11,6 +11,10 @@
+ #include "tests.h"
+ #include "util.h"
+ 
++#ifndef M_PIl
++#define M_PIl 3.141592653589793238462643383279502884L
++#endif
++
+ static void test_tokenizer(const char *data, ...) {
+         unsigned line = 0, column = 0;
+         void *state = NULL;
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch
new file mode 100644
index 0000000..eb018bb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch
@@ -0,0 +1,11 @@
+Index: git/src/libsystemd/libsystemd.pc.in
+===================================================================
+--- git.orig/src/libsystemd/libsystemd.pc.in
++++ git/src/libsystemd/libsystemd.pc.in
+@@ -16,5 +16,5 @@ Name: systemd
+ Description: systemd Library
+ URL: @PROJECT_URL@
+ Version: @PROJECT_VERSION@
+-Libs: -L${libdir} -lsystemd
++Libs: -L${libdir} -lsystemd -lrt -lmount -lcap
+ Cflags: -I${includedir}
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb
new file mode 100644
index 0000000..c8e81a4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb
@@ -0,0 +1,69 @@
+SUMMARY = "libsystemd static library"
+DESCRIPTION = "libsystemd static library built specifically as an integral component of sdbus-c++"
+
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
+
+inherit meson pkgconfig
+
+DEPENDS += "gperf-native gettext-native util-linux libcap"
+
+SRCREV = "efb536d0cbe2e58f80e501d19999928c75e08f6a"
+SRCBRANCH = "v243-stable"
+SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}"
+
+SRC_URI += "file://static-libsystemd-pkgconfig.patch"
+
+# patches needed by musl
+SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}"
+SRC_URI_MUSL = "\
+               file://0002-don-t-use-glibc-specific-qsort_r.patch \
+               file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
+               file://0004-add-fallback-parse_printf_format-implementation.patch \
+               file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
+               file://0006-Include-netinet-if_ether.h.patch \
+               file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch \
+               file://0008-add-missing-FTW_-macros-for-musl.patch \
+               file://0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
+               file://0011-Use-uintmax_t-for-handling-rlim_t.patch \
+               file://0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
+               file://0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
+               file://0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
+               file://0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
+               file://0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
+               file://0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
+               file://0020-missing_type.h-add-__compar_d_fn_t-definition.patch \
+               file://0021-avoid-redefinition-of-prctl_mm_map-structure.patch \
+               file://0024-test-json.c-define-M_PIl.patch \
+               file://0001-do-not-disable-buffer-in-writing-files.patch \
+               file://0002-src-login-brightness.c-include-sys-wait.h.patch \
+               file://0003-src-basic-copy.c-include-signal.h.patch \
+               file://0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch \
+               "
+
+PACKAGECONFIG ??= "gshadow idn"
+PACKAGECONFIG_remove_libc-musl = " gshadow idn"
+PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
+PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
+
+EXTRA_OEMESON += "-Dstatic-libsystemd=pic"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+    ninja -v ${PARALLEL_MAKE} version.h
+    ninja -v ${PARALLEL_MAKE} libsystemd.a
+}
+
+do_install () {
+    install -d ${D}${libdir}
+    install ${B}/libsystemd.a ${D}${libdir}
+
+    install -d ${D}${includedir}/systemd
+    install ${S}/src/systemd/*.h ${D}${includedir}/systemd
+
+    install -d ${D}${libdir}/pkgconfig
+    install ${B}/src/libsystemd/libsystemd.pc ${D}${libdir}/pkgconfig
+}
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools-native_0.7.6.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools-native_0.7.6.bb
new file mode 100644
index 0000000..6492c23
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools-native_0.7.6.bb
@@ -0,0 +1,14 @@
+SUMMARY = "sdbus-c++ native tools"
+DESCRIPTION = "Native interface code generator for development with sdbus-c++"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+inherit cmake native
+
+DEPENDS += "expat"
+
+SRCREV = "5121d46eed42231285c18d317a9f48e0b2849d5e"
+SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master;subpath=tools"
+
+S = "${WORKDIR}/tools"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.7.6.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.7.6.bb
new file mode 100644
index 0000000..57774cb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.7.6.bb
@@ -0,0 +1,32 @@
+SUMMARY = "sdbus-c++"
+DESCRIPTION = "High-level C++ D-Bus library designed to provide easy-to-use yet powerful API in modern C++"
+
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+inherit cmake pkgconfig systemd ptest
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'with-external-libsystemd', 'with-builtin-libsystemd', d)} \
+                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
+PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap"
+PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd"
+PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${BPN}/tests,-DBUILD_TESTS=OFF"
+
+DEPENDS += "expat"
+
+SRCREV = "5121d46eed42231285c18d317a9f48e0b2849d5e"
+SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master"
+SRC_URI += "file://run-ptest"
+
+EXTRA_OECMAKE = "-DBUILD_CODE_GEN=ON \
+                 -DBUILD_DOC=ON \
+                 -DBUILD_DOXYGEN_DOC=OFF"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN}_remove = "${sysconfdir}"
+FILES_${PN}-ptest += "${sysconfdir}/dbus-1/system.d/"
+FILES_${PN}-ptest += "${libdir}/${BPN}/tests"
+FILES_${PN}-dev += "${bindir}/sdbus-c++-xml2cpp"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.11.0.bb b/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.13.0.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.11.0.bb
rename to meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.13.0.bb
index c2d644b..0854bd6 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.13.0.bb
@@ -1,12 +1,12 @@
 SUMMARY = "Crypto and TLS for C++11"
 HOMEPAGE = "https://botan.randombit.net"
 LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://license.txt;md5=f4c145d4d70a3244a053c9f90d4841fc"
+LIC_FILES_CHKSUM = "file://license.txt;md5=a02e03c8fa2c5e7b9b3fcc1b9811fd3b"
 SECTION = "libs"
 
 SRC_URI = "https://botan.randombit.net/releases/Botan-${PV}.tar.xz"
-SRC_URI[md5sum] = "2dba13b0d25d0e9d2a6f9867c62c9f2e"
-SRC_URI[sha256sum] = "f7874da2aeb8c018fd77df40b2137879bf90b66f5589490c991e83fb3e8094be"
+SRC_URI[md5sum] = "9f90c7d523778be5f23f3ce79046ba35"
+SRC_URI[sha256sum] = "f57ae42a41e1091bca58f44f41addebd9a390b651603952c881ec89d50187e90"
 
 S = "${WORKDIR}/Botan-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.3.18.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.4.11.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.3.18.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.4.11.bb
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
index ec5ac11..23de69d 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -4,7 +4,7 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b1becf0cfa3366e0f4d854d1d264f311"
 
-SRC_URI = "http://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
+SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz \
            file://my.cnf \
            file://mysqld.service \
            file://install_db.service \
@@ -18,9 +18,11 @@
            file://c11_atomics.patch \
            file://clang_version_header_conflict.patch \
            file://fix-arm-atomic.patch \
+           file://0001-Fix-build-breakage-from-lock_guard-error-6161.patch \
+           file://0001-Fix-library-LZ4-lookup.patch \
           "
-SRC_URI[md5sum] = "b3524c0825c3a1c255496daea38304a0"
-SRC_URI[sha256sum] = "69456ca85bf9d96c6d28b4ade2a9f6787d79a602e27ef941f9ba4e0b55dddedc"
+SRC_URI[md5sum] = "d0de881ab8ead46928cafb7d558535c1"
+SRC_URI[sha256sum] = "4c076232b99433b09eb3c6d62f607192b3474d022703699b8f6aef4e79de3fb9"
 
 UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch
new file mode 100644
index 0000000..87c7061
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch
@@ -0,0 +1,32 @@
+Subject: [PATCH] Fix build breakage from lock_guard error (#6161)
+
+Summary:
+This change fixes a source issue that caused compile time error which
+breaks build for many fbcode services in that setup. The size() member
+function of channel is a const member, so member variables accessed
+within it are implicitly const as well. This caused error when clang
+fails to resolve to a constructor that takes std::mutex because the
+suitable constructor got rejected due to loss of constness for its
+argument. The fix is to add mutable modifier to the lock_ member of
+channel.
+
+Pull Request resolved: https://github.com/facebook/rocksdb/pull/6161
+
+Differential Revision: D18967685
+
+Pulled By: maysamyabandeh
+
+Upstream-Status: Backport
+
+fbshipit-source-id:698b6a5153c3c92eeacb842c467aa28cc350d432 
+--- a/storage/rocksdb/rocksdb/util/channel.h
++++ b/storage/rocksdb/rocksdb/util/channel.h
+@@ -60,7 +60,7 @@ class channel {
+ 
+  private:
+   std::condition_variable cv_;
+-  std::mutex lock_;
++  mutable std::mutex lock_;
+   std::queue<T> buffer_;
+   bool eof_;
+ };
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
new file mode 100644
index 0000000..574dfd3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
@@ -0,0 +1,30 @@
+From 1d7612b063eb1fc7bf97bc27b13e1de596748aa1 Mon Sep 17 00:00:00 2001
+From: Sumit Garg <sumit.garg@linaro.org>
+Date: Wed, 8 Jan 2020 04:58:30 +0000
+Subject: [PATCH] Fix library LZ4 lookup.
+
+Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
+---
+ cmake/FindLZ4.cmake | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/FindLZ4.cmake b/cmake/FindLZ4.cmake
+index e97dd63e2b0..2f4694e727c 100644
+--- a/cmake/FindLZ4.cmake
++++ b/cmake/FindLZ4.cmake
+@@ -1,5 +1,10 @@
+-find_path(LZ4_INCLUDE_DIR NAMES lz4.h)
+-find_library(LZ4_LIBRARY NAMES lz4)
++find_path(LZ4_INCLUDE_DIR
++  NAMES	lz4.h
++  NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
++
++find_library(LZ4_LIBRARY
++  NAMES lz4
++  NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+ 
+ include(FindPackageHandleStandardArgs)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch
index 34d3114..185b7b7 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch
@@ -15,11 +15,9 @@
  storage/rocksdb/build_rocksdb.cmake | 3 +++
  1 file changed, 3 insertions(+)
 
-diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
-index c36c761..2b539ff 100644
 --- a/storage/rocksdb/build_rocksdb.cmake
 +++ b/storage/rocksdb/build_rocksdb.cmake
-@@ -424,6 +424,9 @@ list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/build_version.cc)
+@@ -470,6 +470,9 @@ list(APPEND SOURCES ${CMAKE_CURRENT_BINA
  
  ADD_CONVENIENCE_LIBRARY(rocksdblib ${SOURCES})
  target_link_libraries(rocksdblib ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
@@ -27,8 +25,5 @@
 +  TARGET_LINK_LIBRARIES(rocksdblib atomic)
 +ENDIF()
  IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-   set_target_properties(rocksdblib PROPERTIES COMPILE_FLAGS "-fPIC -fno-builtin-memcmp -frtti")
+   set_target_properties(rocksdblib PROPERTIES COMPILE_FLAGS "-fPIC -fno-builtin-memcmp")
  endif()
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.3.18.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.4.11.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.3.18.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.4.11.bb
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.0.bb b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.1.bb
similarity index 63%
rename from meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.0.bb
rename to meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.1.bb
index d5b1ebd..4868519 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.0.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.1.bb
@@ -8,5 +8,5 @@
    file://0001-Improve-reproducibility.patch \
 "
 
-SRC_URI[md5sum] = "87545416ef021eee8621d31a93fcc899"
-SRC_URI[sha256sum] = "cda2397215f758b793f741c86be05468257b0e6bcb1a6113882ab5d0df0855c6"
+SRC_URI[md5sum] = "2ee1bd4ec5f49363a3f456f07e599b41"
+SRC_URI[sha256sum] = "a09bf3abbaf6763980d0f8acbb943b7629a8b20073de18d867aecdb7988483ed"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-CMake-has-stock-FindZLIB-in-upper-case.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-CMake-has-stock-FindZLIB-in-upper-case.patch
deleted file mode 100644
index 9682f8a..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-CMake-has-stock-FindZLIB-in-upper-case.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 38146a5d803a1fb9b10f011aa857872b6f20cd02 Mon Sep 17 00:00:00 2001
-From: Tongliang Liao <xkszltl@gmail.com>
-Date: Mon, 29 Apr 2019 03:51:51 -0700
-Subject: [PATCH] CMake has stock FindZLIB in upper case. More details in
- https://cmake.org/cmake/help/v3.14/module/FindZLIB.html
-
-
-Upstream-Status: Backport https://github.com/facebook/rocksdb/pull/5261
-
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 40cdd26bb..355686566 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -92,7 +92,7 @@ else()
-   endif()
-
-   if(WITH_ZLIB)
--    find_package(zlib REQUIRED)
-+    find_package(ZLIB REQUIRED)
-     add_definitions(-DZLIB)
-     if(ZLIB_INCLUDE_DIRS)
-       # CMake 3
---
-2.11.0
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Disable-Wshadow-and-do-not-mark-default-copy-constru.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Disable-Wshadow-and-do-not-mark-default-copy-constru.patch
deleted file mode 100644
index eccaa3a..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Disable-Wshadow-and-do-not-mark-default-copy-constru.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From ee728434124b9b7d17abbd060a62aac79a9b79c0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 12 Feb 2019 14:31:24 -0800
-Subject: [PATCH] Disable -Wshadow and do not mark default copy constructors
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- CMakeLists.txt                                     | 2 +-
- utilities/persistent_cache/block_cache_tier.h      | 4 ++--
- utilities/persistent_cache/block_cache_tier_file.h | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 98e2e1973..3a24a075b 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -254,7 +254,7 @@ if(FAIL_ON_WARNINGS)
-   if(MSVC)
-     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
-   else() # assume GCC
--    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
-+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-error=shadow")
-   endif()
- endif()
- 
-diff --git a/utilities/persistent_cache/block_cache_tier.h b/utilities/persistent_cache/block_cache_tier.h
-index 2b2c0ef4f..96d0540a4 100644
---- a/utilities/persistent_cache/block_cache_tier.h
-+++ b/utilities/persistent_cache/block_cache_tier.h
-@@ -91,9 +91,9 @@ class BlockCacheTier : public PersistentCacheTier {
-         : key_(std::move(key)), data_(data) {}
-     ~InsertOp() {}
- 
--    InsertOp() = delete;
-+    InsertOp() = default;
-     InsertOp(InsertOp&& /*rhs*/) = default;
--    InsertOp& operator=(InsertOp&& rhs) = default;
-+    InsertOp& operator=(InsertOp&& rhs) = delete;
- 
-     // used for estimating size by bounded queue
-     size_t Size() { return data_.size() + key_.size(); }
-diff --git a/utilities/persistent_cache/block_cache_tier_file.h b/utilities/persistent_cache/block_cache_tier_file.h
-index e38b6c9a1..d9b89a4f7 100644
---- a/utilities/persistent_cache/block_cache_tier_file.h
-+++ b/utilities/persistent_cache/block_cache_tier_file.h
-@@ -262,7 +262,7 @@ class ThreadedWriter : public Writer {
-         : file_(file), buf_(buf), file_off_(file_off), callback_(callback) {}
- 
-     IO(const IO&) = default;
--    IO& operator=(const IO&) = default;
-+    IO& operator=(const IO&) = delete;
-     size_t Size() const { return sizeof(IO); }
- 
-     WritableFile* file_ = nullptr;           // File to write to
--- 
-2.20.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Fix-build-breakage-from-lock_guard-error-6161.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Fix-build-breakage-from-lock_guard-error-6161.patch
new file mode 100644
index 0000000..ac87d0c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Fix-build-breakage-from-lock_guard-error-6161.patch
@@ -0,0 +1,36 @@
+From b626703de7ece507f360507e49d3ecb448b12e07 Mon Sep 17 00:00:00 2001
+From: Maysam Yabandeh <myabandeh@fb.com>
+Date: Thu, 12 Dec 2019 13:48:50 -0800
+Subject: [PATCH] Fix build breakage from lock_guard error (#6161)
+
+Summary:
+This change fixes a source issue that caused compile time error which breaks build for many fbcode services in that setup. The size() member function of channel is a const member, so member variables accessed within it are implicitly const as well. This caused error when clang fails to resolve to a constructor that takes std::mutex because the suitable constructor got rejected due to loss of constness for its argument. The fix is to add mutable modifier to the lock_ member of channel.
+Pull Request resolved: https://github.com/facebook/rocksdb/pull/6161
+
+Differential Revision: D18967685
+
+Pulled By: maysamyabandeh
+
+Upstream-Status: Backport
+
+fbshipit-source-id: 698b6a5153c3c92eeacb842c467aa28cc350d432
+---
+ util/channel.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/channel.h b/util/channel.h
+index 0225482c0..a8a47680a 100644
+--- a/util/channel.h
++++ b/util/channel.h
+@@ -60,7 +60,7 @@ class channel {
+ 
+  private:
+   std::condition_variable cv_;
+-  std::mutex lock_;
++  mutable std::mutex lock_;
+   std::queue<T> buffer_;
+   bool eof_;
+ };
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch
new file mode 100644
index 0000000..97ddbce
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch
@@ -0,0 +1,31 @@
+From 49dcd22dcf1aae5995c42eac0fda68516fc1cd43 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Wed, 19 Jun 2019 17:57:24 +0800
+Subject: [PATCH] db/write_thread.cc: Initialize state
+
+Fixed an error when compiled without -O2:
+db/write_thread.cc:183:14: error: 'state' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ db/write_thread.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/db/write_thread.cc b/db/write_thread.cc
+index 835992c..6f99a11 100644
+--- a/db/write_thread.cc
++++ b/db/write_thread.cc
+@@ -59,7 +59,7 @@ uint8_t WriteThread::BlockingAwaitState(Writer* w, uint8_t goal_mask) {
+ 
+ uint8_t WriteThread::AwaitState(Writer* w, uint8_t goal_mask,
+                                 AdaptationContext* ctx) {
+-  uint8_t state;
++  uint8_t state = 0;
+ 
+   // 1. Busy loop using "pause" for 1 micro sec
+   // 2. Else SOMETIMES busy loop using "yield" for 100 micro sec (default)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-fix-Issue-5303.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-fix-Issue-5303.patch
deleted file mode 100644
index ba9834d..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-fix-Issue-5303.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 512aaf3d833973f6146c6f1235b590901876175e Mon Sep 17 00:00:00 2001
-From: biocodz <biocodz@protonmail.com>
-Date: Fri, 7 Jun 2019 09:49:37 -0400
-Subject: [PATCH] fix Issue 5303
-
-Upstream-Status: Submitted [https://github.com/facebook/rocksdb/pull/5426]
-
----
- db/internal_stats.h                                | 21 +++++++++++++++++++++
- db/version_edit.h                                  |  8 ++++++++
- utilities/persistent_cache/persistent_cache_util.h |  2 +-
- 3 files changed, 30 insertions(+), 1 deletion(-)
-
-diff --git a/db/internal_stats.h b/db/internal_stats.h
-index 6fa8727a4..09447644d 100644
---- a/db/internal_stats.h
-+++ b/db/internal_stats.h
-@@ -236,6 +236,27 @@ class InternalStats {
-       }
-     }
-
-+	CompactionStats & operator=(const CompactionStats& c) {
-+	  count = c.count;
-+	  micros = c.micros;
-+	  cpu_micros = c.cpu_micros;
-+	  bytes_read_non_output_levels = c.bytes_read_non_output_levels;
-+	  bytes_read_output_level = c.bytes_read_output_level;
-+	  bytes_written = c.bytes_written;
-+	  bytes_moved = c.bytes_moved;
-+	  num_input_files_in_non_output_levels =
-+	      c.num_input_files_in_non_output_levels;
-+	  num_input_files_in_output_level = c.num_input_files_in_output_level;
-+	  num_output_files = c.num_output_files;
-+	  num_input_records = c.num_input_records;
-+	  num_dropped_records = c.num_dropped_records;
-+	  int num_of_reasons = static_cast<int>(CompactionReason::kNumOfReasons);
-+	  for (int i = 0; i < num_of_reasons; i++) {
-+	  	counts[i] = c.counts[i];
-+	  }
-+	  return *this;
-+	}
-+
-     void Clear() {
-       this->micros = 0;
-       this->cpu_micros = 0;
-diff --git a/db/version_edit.h b/db/version_edit.h
-index 229531792..5c50ef552 100644
---- a/db/version_edit.h
-+++ b/db/version_edit.h
-@@ -52,6 +52,14 @@ struct FileDescriptor {
-         smallest_seqno(_smallest_seqno),
-         largest_seqno(_largest_seqno) {}
-
-+  FileDescriptor(const FileDescriptor& fd) {
-+    table_reader = fd.table_reader;
-+    packed_number_and_path_id = fd.packed_number_and_path_id;
-+    file_size = fd.file_size;
-+    smallest_seqno = fd.smallest_seqno;
-+    largest_seqno = fd.largest_seqno;
-+  }
-+
-   FileDescriptor& operator=(const FileDescriptor& fd) {
-     table_reader = fd.table_reader;
-     packed_number_and_path_id = fd.packed_number_and_path_id;
-diff --git a/utilities/persistent_cache/persistent_cache_util.h b/utilities/persistent_cache/persistent_cache_util.h
-index 214bb5875..254c038f9 100644
---- a/utilities/persistent_cache/persistent_cache_util.h
-+++ b/utilities/persistent_cache/persistent_cache_util.h
-@@ -48,7 +48,7 @@ class BoundedQueue {
-     T t = std::move(q_.front());
-     size_ -= t.Size();
-     q_.pop_front();
--    return std::move(t);
-+    return t;
-   }
-
-   size_t Size() const {
---
-2.11.0
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-utilities-Fix-build-failure-with-Werror-maybe-uninit.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-utilities-Fix-build-failure-with-Werror-maybe-uninit.patch
deleted file mode 100644
index ef0429a..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-utilities-Fix-build-failure-with-Werror-maybe-uninit.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 8996f075e64da0e6ffeda57632ef31f8710defcc Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Fri, 15 Mar 2019 16:47:03 +0800
-Subject: [PATCH] utilities: Fix build failure with -Werror=maybe-uninitialized
-
-Summary:
-Initialize magic_number to zero to avoid such failure.
-utilities/blob_db/blob_log_format.cc:91:3: error: 'magic_number' may be used
-uninitialized in this function [-Werror=maybe-uninitialized]
-   if (magic_number != kMagicNumber) {
-   ^~
-
-Upstream-Status: Accepted [expected version 5.19]
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- utilities/blob_db/blob_log_format.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/utilities/blob_db/blob_log_format.cc b/utilities/blob_db/blob_log_format.cc
-index 2bf7028..8726cb8 100644
---- a/utilities/blob_db/blob_log_format.cc
-+++ b/utilities/blob_db/blob_log_format.cc
-@@ -82,7 +82,7 @@ Status BlobLogFooter::DecodeFrom(Slice src) {
-   uint32_t src_crc = 0;
-   src_crc = crc32c::Value(src.data(), BlobLogFooter::kSize - sizeof(uint32_t));
-   src_crc = crc32c::Mask(src_crc);
--  uint32_t magic_number;
-+  uint32_t magic_number = 0;
-   if (!GetFixed32(&src, &magic_number) || !GetFixed64(&src, &blob_count) ||
-       !GetFixed64(&src, &expiration_range.first) ||
-       !GetFixed64(&src, &expiration_range.second) || !GetFixed32(&src, &crc)) {
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
index 9fd5ee1..713d5bb 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
@@ -6,15 +6,13 @@
                     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
 
-SRCREV = "628a7fd74b5611657106c57f724f1682b114684c"
-SRCBRANCH = "6.0.fb"
-PV = "6.0.2"
+SRCREV = "4cfbd87afd08a16df28436fb990ef6b154ee6114"
+SRCBRANCH = "6.5.fb"
+PV = "6.5.2"
 
 SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH} \
-           file://0001-CMake-has-stock-FindZLIB-in-upper-case.patch \
-           file://0001-Disable-Wshadow-and-do-not-mark-default-copy-constru.patch \
-           file://0001-utilities-Fix-build-failure-with-Werror-maybe-uninit.patch \
-           file://0001-fix-Issue-5303.patch \
+           file://0001-Fix-build-breakage-from-lock_guard-error-6161.patch \
+           file://0001-db-write_thread.cc-Initialize-state.patch \
           "
 
 S = "${WORKDIR}/git"
@@ -22,9 +20,9 @@
 inherit cmake
 
 PACKAGECONFIG ??= "bzip2 zlib lz4 gflags"
-PACKAGECONFIG[bzip2] = "-DWITH_BZ2=ON -DBZIP2_LIBRARIES:STRING=bz2,-DWITH_BZ2=OFF,bzip2"
-PACKAGECONFIG[lz4] = "-DWITH_LZ4=ON -DLZ4_LIBRARIES:STRING=lz4,-DWITH_LZ4=OFF,lz4"
-PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON -DZLIB_LIBRARY:STRING=z,-DWITH_ZLIB=OFF,zlib"
+PACKAGECONFIG[bzip2] = "-DWITH_BZ2=ON,-DWITH_BZ2=OFF,bzip2"
+PACKAGECONFIG[lz4] = "-DWITH_LZ4=ON,-DWITH_LZ4=OFF,lz4"
+PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
 PACKAGECONFIG[zstd] = "-DWITH_ZSTD=ON,-DWITH_ZSTD=OFF,zstd"
 PACKAGECONFIG[lite] = "-DROCKSDB_LITE=ON,-DROCKSDB_LITE=OFF"
 PACKAGECONFIG[gflags] = "-DWITH_GFLAGS=ON,-DWITH_GFLAGS=OFF,gflags"
@@ -34,6 +32,7 @@
     -DPORTABLE=ON \
     -DWITH_TESTS=OFF \
     -DWITH_TOOLS=OFF \
+    -DFAIL_ON_WARNINGS=OFF \
 "
 
 do_install_append() {
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch
new file mode 100644
index 0000000..6e58490
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch
@@ -0,0 +1,61 @@
+From 5c63eb5d56abd4e5232add4727247965a863d851 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Dec 2019 14:02:45 -0800
+Subject: [PATCH] Do not add stack pointer to clobber list
+
+It was being ignored until now when gcc 9.0 became capable
+of flagging these silent ignore via [1].
+
+We weren't actually clobbering the stack pointers here
+so it should not cause change in behavior.
+
+[1] https://gcc.gnu.org/PR52813
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ linux_syscall_support.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/linux_syscall_support.h b/linux_syscall_support.h
+index 9276f56..6e73309 100644
+--- a/linux_syscall_support.h
++++ b/linux_syscall_support.h
+@@ -1955,7 +1955,7 @@ struct kernel_statfs {
+                            LSS_ENTRYPOINT                                     \
+                            "pop %%ebx"                                        \
+                            args                                               \
+-                           : "esp", "memory");                                \
++                           : "memory");                                       \
+       LSS_RETURN(type,__res)
+     #undef  _syscall0
+     #define _syscall0(type,name)                                              \
+@@ -2012,7 +2012,7 @@ struct kernel_statfs {
+                              : "i" (__NR_##name), "ri" ((long)(arg1)),        \
+                                "c" ((long)(arg2)), "d" ((long)(arg3)),        \
+                                "S" ((long)(arg4)), "D" ((long)(arg5))         \
+-                             : "esp", "memory");                              \
++                             : "memory");                                     \
+         LSS_RETURN(type,__res);                                               \
+       }
+     #undef  _syscall6
+@@ -2034,7 +2034,7 @@ struct kernel_statfs {
+                              : "i" (__NR_##name),  "0" ((long)(&__s)),        \
+                                "c" ((long)(arg2)), "d" ((long)(arg3)),        \
+                                "S" ((long)(arg4)), "D" ((long)(arg5))         \
+-                             : "esp", "memory");                              \
++                             : "memory");                                     \
+         LSS_RETURN(type,__res);                                               \
+       }
+     LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+@@ -2120,7 +2120,7 @@ struct kernel_statfs {
+                            : "0"(-EINVAL), "i"(__NR_clone),
+                              "m"(fn), "m"(child_stack), "m"(flags), "m"(arg),
+                              "m"(parent_tidptr), "m"(newtls), "m"(child_tidptr)
+-                           : "esp", "memory", "ecx", "edx", "esi", "edi");
++                           : "memory", "ecx", "edx", "esi", "edi");
+       LSS_RETURN(int, __res);
+     }
+ 
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
index bc79727..466abe5 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
@@ -8,11 +8,9 @@
  src/client/linux/handler/exception_handler.cc | 17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
-Index: git/src/client/linux/handler/exception_handler.cc
-===================================================================
---- git.orig/src/client/linux/handler/exception_handler.cc
-+++ git/src/client/linux/handler/exception_handler.cc
-@@ -495,7 +495,19 @@ bool ExceptionHandler::SimulateSignalDel
+--- a/src/client/linux/handler/exception_handler.cc
++++ b/src/client/linux/handler/exception_handler.cc
+@@ -490,7 +490,19 @@ bool ExceptionHandler::SimulateSignalDel
    siginfo.si_code = SI_USER;
    siginfo.si_pid = getpid();
    ucontext_t context;
@@ -32,7 +30,7 @@
    return HandleSignal(sig, &siginfo, &context);
  }
  
-@@ -680,9 +692,14 @@ bool ExceptionHandler::WriteMinidump() {
+@@ -675,9 +687,14 @@ bool ExceptionHandler::WriteMinidump() {
    sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
  
    CrashContext context;
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch
index 2b892ad..bdd787a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch
@@ -8,11 +8,9 @@
  linux_syscall_support.h | 3 +++
  1 file changed, 3 insertions(+)
 
-Index: lss/linux_syscall_support.h
-===================================================================
---- lss.orig/linux_syscall_support.h
-+++ lss/linux_syscall_support.h
-@@ -793,6 +793,9 @@ struct kernel_statfs {
+--- a/linux_syscall_support.h
++++ b/linux_syscall_support.h
+@@ -816,6 +816,9 @@ struct kernel_statfs {
  #define FUTEX_TRYLOCK_PI_PRIVATE  (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG)
  #endif
  
@@ -22,7 +20,7 @@
  
  #if defined(__x86_64__)
  #ifndef ARCH_SET_GS
-@@ -924,6 +927,7 @@ struct kernel_statfs {
+@@ -947,6 +950,7 @@ struct kernel_statfs {
  #ifndef __NR_fallocate
  #define __NR_fallocate          324
  #endif
@@ -30,7 +28,7 @@
  /* End of i386 definitions                                                   */
  #elif defined(__ARM_ARCH_3__) || defined(__ARM_EABI__)
  #ifndef __NR_setresuid
-@@ -1211,6 +1215,12 @@ struct kernel_statfs {
+@@ -1239,6 +1243,12 @@ struct kernel_statfs {
  #ifndef __NR_fallocate
  #define __NR_fallocate          285
  #endif
@@ -43,3 +41,16 @@
  /* End of x86-64 definitions                                                 */
  #elif defined(__mips__)
  #if _MIPS_SIM == _MIPS_SIM_ABI32
+@@ -1418,6 +1428,12 @@ struct kernel_statfs {
+ #ifndef __NR_ioprio_get
+ #define __NR_ioprio_get         (__NR_Linux + 274)
+ #endif
++
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of MIPS (64bit API) definitions */
+ #else
+ #ifndef __NR_setresuid
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/dont-clobber-rsp.patch b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/dont-clobber-rsp.patch
deleted file mode 100644
index edf9035..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/dont-clobber-rsp.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From d1d7b616219fd47736c804ff4c2f393d7184a75b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 23 Dec 2018 16:58:04 -0800
-Subject: [PATCH] chromium: stack pointer clobber
-
-Do not add stack pointer to clobber list
-
-it was being ignored until gcc 9.0 became capable
-of flagging this silent ignoring via [1]
-
-[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52813<Paste>
-
-Upstream-Status: Submitted [https://chromium-review.googlesource.com/c/linux-syscall-support/+/1390160]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/third_party/lss/linux_syscall_support.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-Index: b/src/third_party/lss/linux_syscall_support.h
-===================================================================
---- a/src/third_party/lss/linux_syscall_support.h
-+++ b/src/third_party/lss/linux_syscall_support.h
-@@ -1957,7 +1957,7 @@ struct kernel_statfs {
-                            LSS_ENTRYPOINT                                     \
-                            "pop %%ebx"                                        \
-                            args                                               \
--                           : "esp", "memory");                                \
-+                           : "memory");                                       \
-       LSS_RETURN(type,__res)
-     #undef  _syscall0
-     #define _syscall0(type,name)                                              \
-@@ -1966,7 +1966,7 @@ struct kernel_statfs {
-         __asm__ volatile(LSS_ENTRYPOINT                                       \
-                          : "=a" (__res)                                       \
-                          : "0" (__NR_##name)                                  \
--                         : "esp", "memory");                                  \
-+                         : "memory");                                         \
-         LSS_RETURN(type,__res);                                               \
-       }
-     #undef  _syscall1
-@@ -2014,7 +2014,7 @@ struct kernel_statfs {
-                              : "i" (__NR_##name), "ri" ((long)(arg1)),        \
-                                "c" ((long)(arg2)), "d" ((long)(arg3)),        \
-                                "S" ((long)(arg4)), "D" ((long)(arg5))         \
--                             : "esp", "memory");                              \
-+                             : "memory");                                     \
-         LSS_RETURN(type,__res);                                               \
-       }
-     #undef  _syscall6
-@@ -2036,7 +2036,7 @@ struct kernel_statfs {
-                              : "i" (__NR_##name),  "0" ((long)(&__s)),        \
-                                "c" ((long)(arg2)), "d" ((long)(arg3)),        \
-                                "S" ((long)(arg4)), "D" ((long)(arg5))         \
--                             : "esp", "memory");                              \
-+                             : "memory");                                     \
-         LSS_RETURN(type,__res);                                               \
-       }
-     LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
-@@ -2122,7 +2122,7 @@ struct kernel_statfs {
-                            : "0"(-EINVAL), "i"(__NR_clone),
-                              "m"(fn), "m"(child_stack), "m"(flags), "m"(arg),
-                              "m"(parent_tidptr), "m"(newtls), "m"(child_tidptr)
--                           : "esp", "memory", "ecx", "edx", "esi", "edi");
-+                           : "memory", "ecx", "edx", "esi", "edi");
-       LSS_RETURN(int, __res);
-     }
- 
-@@ -2407,7 +2407,7 @@ struct kernel_statfs {
-                                "d"(LSS_SYSCALL_ARG(parent_tidptr)),
-                                "r"(LSS_SYSCALL_ARG(newtls)),
-                                "r"(LSS_SYSCALL_ARG(child_tidptr))
--                             : "rsp", "memory", "r8", "r10", "r11", "rcx");
-+                             : "memory", "r8", "r10", "r11", "rcx");
-       }
-       LSS_RETURN(int, __res);
-     }
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch
index 42e073b..5139396 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch
@@ -3,48 +3,6 @@
 Upstream-Status: Inappropriate[need to consider Android]
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: git/src/client/linux/dump_writer_common/thread_info.cc
-===================================================================
---- git.orig/src/client/linux/dump_writer_common/thread_info.cc
-+++ git/src/client/linux/dump_writer_common/thread_info.cc
-@@ -229,7 +229,6 @@ void ThreadInfo::FillCPUContext(RawConte
- }
- 
- #elif defined(__mips__)
--
- uintptr_t ThreadInfo::GetInstructionPointer() const {
-   return mcontext.pc;
- }
-@@ -263,8 +262,11 @@ void ThreadInfo::FillCPUContext(RawConte
-   out->cause = 0; // Not stored in mcontext
- 
-   for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
-+#ifdef __GLIBC__
-     out->float_save.regs[i] = mcontext.fpregs.fp_r.fp_fregs[i]._fp_fregs;
--
-+#else
-+    out->float_save.regs[i] = mcontext.fpregs[i];
-+#endif
-   out->float_save.fpcsr = mcontext.fpc_csr;
- #if _MIPS_SIM == _ABIO32
-   out->float_save.fir = mcontext.fpc_eir;
-Index: git/src/client/linux/dump_writer_common/ucontext_reader.cc
-===================================================================
---- git.orig/src/client/linux/dump_writer_common/ucontext_reader.cc
-+++ git/src/client/linux/dump_writer_common/ucontext_reader.cc
-@@ -247,8 +247,11 @@ void UContextReader::FillCPUContext(RawC
-   out->cause = 0;  // Not reported in signal context.
- 
-   for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
-+#ifdef __GLIBC__
-     out->float_save.regs[i] = uc->uc_mcontext.fpregs.fp_r.fp_dregs[i];
--
-+#else
-+    out->float_save.regs[i] = uc->uc_mcontext.fpregs[i];
-+#endif
-   out->float_save.fpcsr = uc->uc_mcontext.fpc_csr;
- #if _MIPS_SIM == _ABIO32
-   out->float_save.fir = uc->uc_mcontext.fpc_eir;  // Unused.
 Index: git/src/client/linux/minidump_writer/linux_core_dumper.cc
 ===================================================================
 --- git.orig/src/client/linux/minidump_writer/linux_core_dumper.cc
@@ -58,20 +16,3 @@
          for (int i = EF_R0; i <= EF_R31; i++)
            info.mcontext.gregs[i - EF_R0] = status->pr_reg[i];
  #else  // __ANDROID__
-Index: git/src/tools/linux/md2core/minidump-2-core.cc
-===================================================================
---- git.orig/src/tools/linux/md2core/minidump-2-core.cc
-+++ git/src/tools/linux/md2core/minidump-2-core.cc
-@@ -516,8 +516,12 @@ ParseThreadRegisters(CrashedProcess::Thr
-   thread->mcontext.lo3 = rawregs->lo[2];
- 
-   for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i) {
-+#ifdef __GLIBC__
-     thread->mcontext.fpregs.fp_r.fp_fregs[i]._fp_fregs =
-         rawregs->float_save.regs[i];
-+#else
-+    thread->mcontext.fpregs[i] = rawregs->float_save.regs[i];
-+#endif
-   }
- 
-   thread->mcontext.fpc_csr = rawregs->float_save.fpcsr;
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
index 06f3ee8..ff5acbe 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
@@ -19,11 +19,11 @@
 
 SRCREV_FORMAT = "breakpad_gtest_protobuf_lss_gyp"
 
-SRCREV_breakpad = "5467393a3d1e7ab929fd01d79971701bf4e2c2c6"
-#v1.8.0
-SRCREV_gtest = "ec44c6c1675c25b9827aacd08c02433cccde7780"
+SRCREV_breakpad = "0c0e24f709288a129d665ec27d6f089189318385"
+#v1.10.0
+SRCREV_gtest = "5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081"
 SRCREV_protobuf = "cb6dd4ef5f82e41e06179dcd57d3b1d9246ad6ac"
-SRCREV_lss = "a89bf7903f3169e6bc7b8efc10a73a7571de21cf"
+SRCREV_lss = "8048ece6c16c91acfe0d36d1d3cc0890ab6e945c"
 SRCREV_gyp = "324dd166b7c0b39d513026fa52d6280ac6d56770"
 
 SRC_URI = "git://github.com/google/breakpad;name=breakpad \
@@ -42,7 +42,7 @@
            file://0001-disable-calls-to-getcontext-with-musl.patch \
            file://0001-lss-Match-syscalls-to-match-musl.patch;patchdir=src/third_party/lss \
            file://mips_asm_sgidefs.patch;patchdir=src/third_party/lss \
-           file://dont-clobber-rsp.patch;patchdir=src/third_party/lss;striplevel=4 \
+           file://0001-Do-not-add-stack-pointer-to-clobber-list.patch;patchdir=src/third_party/lss \
 "
 S = "${WORKDIR}/git"
 
@@ -121,3 +121,5 @@
 #| make: *** [src/client/linux/handler/exception_handler.o] Error 1
 ARM_INSTRUCTION_SET_armv5 = "arm"
 ARM_INSTRUCTION_SET_armv4 = "arm"
+
+TOOLCHAIN = "gcc"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb b/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb
new file mode 100644
index 0000000..f9ecd0e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Count blank lines, comment lines, and physical lines of source code \
+in many programming languages."
+AUTHOR = "Al Danial"
+
+LICENSE="GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c1c00f9d3ed9e24fa69b932b7e7aff2"
+
+SRC_URI = "https://github.com/AlDanial/cloc/releases/download/${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "a52f3843825377cfa4e4b3b30a567ab4"
+SRC_URI[sha256sum] = "c3f0a6bd2319110418ccb3e55a7a1b6d0edfd7528bfd2ae5d530938abe90f254"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+    install -D -m 0755 ${S}/cloc ${D}${bindir}/cloc
+}
+
+RDEPENDS_${PN} = "perl perl-modules"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb b/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.9.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb
rename to meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.9.bb
index 199c31e..99f3ba8 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.9.bb
@@ -18,7 +18,7 @@
 
 DEPENDS += "ncurses"
 
-SRC_URI = "http://downloads.sourceforge.net/project/cscope/cscope/${PV}/${BP}.tar.gz"
+SRC_URI = "http://downloads.sourceforge.net/project/cscope/cscope/v${PV}/${BP}.tar.gz"
 
-SRC_URI[md5sum] = "8f9409a238ee313a96f9f87fe0f3b176"
-SRC_URI[sha256sum] = "4889d091f05aa0845384b1e4965aa31d2b20911fb2c001b2cdcffbcb7212d3af"
+SRC_URI[md5sum] = "16f3cce078b6c0e42299def4028eea6f"
+SRC_URI[sha256sum] = "c5505ae075a871a9cd8d9801859b0ff1c09782075df281c72c23e72115d9f159"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.16.bb b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb
similarity index 70%
rename from meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.16.bb
rename to meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb
index 4df994c..7a4eee3 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.16.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb
@@ -9,9 +9,9 @@
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.src.tar.gz \
            file://0001-build-don-t-look-for-Iconv.patch \
 "
-SRC_URI[md5sum] = "3ec5f8bfda38a05845161fbbd5d8b439"
-SRC_URI[sha256sum] = "ff981fb6f5db4af9deb1dd0c0d9325e0f9ba807d17bd5750636595cf16da3c82"
+SRC_URI[md5sum] = "7997a15c73a8bd6d003eaba5c2ee2b47"
+SRC_URI[sha256sum] = "2cba988af2d495541cbbe5541b3bee0ee11144dcb23a81eada19f5501fd8b599"
 
 inherit cmake python3native
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.11.0.bb b/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.11.0.bb
index bd6dcef..529441d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.11.0.bb
@@ -17,8 +17,8 @@
           "
 
 # Make sure C++11 is used, required for example for GCC 4.9
-CXXFLAGS += "-std=c++11"
-BUILD_CXXFLAGS += "-std=c++11"
+CXXFLAGS += "-std=c++11 -fPIC"
+BUILD_CXXFLAGS += "-std=c++11 -fPIC"
 
 # BUILD_TYPE=Release is required, otherwise flatc is not installed
 EXTRA_OECMAKE += "\
diff --git a/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb b/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb
index c43d23b..a6a0b17 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb
@@ -16,7 +16,7 @@
     geany \
     libxml2 \
     libsoup-2.4 \
-    enchant \
+    enchant2 \
     intltool-native \
     libassuan \
     gpgme \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb b/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb
index 0d29b13..17e16bf 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb
@@ -5,7 +5,7 @@
 
 DEPENDS = "gtk+3 libxml-parser-perl-native python3-docutils-native intltool-native"
 
-inherit features_check autotools pkgconfig perlnative pythonnative gettext
+inherit features_check autotools pkgconfig perlnative gettext
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.8.4.bb b/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.2.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.8.4.bb
rename to meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.2.bb
index 97fc6c7..a88410f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.2.bb
@@ -11,7 +11,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=fa2a23dd1dc6c139f35105379d76df2b"
 
-SRCREV = "ddabf50f72cf369bf652a95c4d9fe31a1865a781"
+SRCREV = "d2e6a971f4544c55b8e3b25cf96db266971b778f"
 SRC_URI = "git://github.com/open-source-parsers/jsoncpp"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb b/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
new file mode 100644
index 0000000..2a52dd6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "LDNS is a DNS library that facilitates DNS tool programming"
+HOMEPAGE = "https://nlnetlabs.nl/ldns"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=34330f15b2b4abbbaaa7623f79a6a019"
+
+SRC_URI = "https://www.nlnetlabs.nl/downloads/ldns/ldns-${PV}.tar.gz"
+SRC_URI[md5sum] = "166262a46995d9972aba417fd091acd5"
+SRC_URI[sha256sum] = "8ac84c16bdca60e710eea75782356f3ac3b55680d40e1530d7cea474ac208229"
+
+DEPENDS = "openssl"
+
+inherit autotools-brokensep
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[drill] = "--with-drill,--without-drill"
+
+EXTRA_OECONF = "--with-ssl=${STAGING_EXECPREFIXDIR} \
+                libtool=${TARGET_PREFIX}libtool"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch b/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch
new file mode 100644
index 0000000..4f1dd76
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch
@@ -0,0 +1,42 @@
+From a12325a0cbf3bf1d66a0b0f8d85e08083bae6066 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
+Date: Wed, 25 Dec 2019 10:27:59 +0100
+Subject: [PATCH] blobmsg: fix array out of bounds GCC 10 warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes following warning reported by GCC 10.0.0 20191203:
+
+ blobmsg.c:234:2: error: 'strcpy' offset 6 from the object at 'attr' is out of the bounds of referenced subobject 'name' with type 'uint8_t[0]' {aka 'unsigned char[0]'} at offset 6 [-Werror=array-bounds]
+   234 |  strcpy((char *) hdr->name, (const char *)name);
+       |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ In file included from blobmsg.c:16:
+ blobmsg.h:42:10: note: subobject 'name' declared here
+    42 |  uint8_t name[];
+       |          ^~~~
+
+Upstream-Status: Submitted [https://gitlab.com/ynezz/openwrt-libubox/commit/3775b3aa28de8c20d96b6f02786a327423b0748a]
+Reported-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Petr Štetiar <ynezz@true.cz>
+---
+ blobmsg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blobmsg.c b/blobmsg.c
+index a860483..b6b7535 100644
+--- a/blobmsg.c
++++ b/blobmsg.c
+@@ -195,7 +195,7 @@ blobmsg_new(struct blob_buf *buf, int type, const char *name, int payload_len, v
+ 	attr->id_len |= be32_to_cpu(BLOB_ATTR_EXTENDED);
+ 	hdr = blob_data(attr);
+ 	hdr->namelen = cpu_to_be16(namelen);
+-	strcpy((char *) hdr->name, (const char *)name);
++	memcpy(hdr->name, name, namelen);
+ 	pad_end = *data = blobmsg_data(attr);
+ 	pad_start = (char *) &hdr->name[namelen];
+ 	if (pad_start < pad_end)
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb b/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
index f9f4e08..7dbefa1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
@@ -16,9 +16,10 @@
     git://git.openwrt.org/project/libubox.git \
     file://0001-version-libraries.patch \
     file://fix-libdir.patch \
+    file://0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch \
 "
 
-SRCREV = "155bf39896f126b1ba121b816922a88dc34c31e3"
+SRCREV = "07413cce72e19520af55dfcbc765484f5ab41dd9"
 PV = "1.0.1+git${SRCPV}"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch
deleted file mode 100644
index 44a835c..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From da5338e68f146efadab7c221291ba4c949d8f12f Mon Sep 17 00:00:00 2001
-From: Vaclav Haisman <vhaisman@gmail.com>
-Date: Sun, 21 Jul 2019 23:23:16 -0700
-Subject: [PATCH] Remove log4cplus version entry from ELF .comment section
-
-Reverts
-https://github.com/log4cplus/log4cplus/commit/9cb0d4ade619da4e40628c9b95ff51de3df29f1b
-
-Upstream-Status: Backport [https://github.com/log4cplus/log4cplus/commit/7e6addc70dffd2e30e902efd18eb845c5d5dd7bb]
-
-Suggested-by: Adrian Bunk <bunk@stusta.de>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/version.cxx | 12 ------------
- 1 file changed, 12 deletions(-)
-
-diff --git a/src/version.cxx b/src/version.cxx
-index ce18212..e002de9 100644
---- a/src/version.cxx
-+++ b/src/version.cxx
-@@ -34,16 +34,4 @@ namespace log4cplus
- unsigned const version = LOG4CPLUS_VERSION;
- char const versionStr[] = LOG4CPLUS_VERSION_STR LOG4CPLUS_VERSION_STR_SUFFIX;
- 
--namespace
--{
--
--#if defined (__ELF__) && (defined (__GNUC__) || defined (__clang__))
--char const versionStrComment[]
--    __attribute__ ((__used__, __section__ ((".comment"))))
--    = "log4cplus " LOG4CPLUS_VERSION_STR LOG4CPLUS_VERSION_STR_SUFFIX;
--#endif
--
--
--} // namespace
--
- } // namespace log4cplus
--- 
-2.22.0
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb
similarity index 73%
rename from meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb
rename to meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb
index 566de28..967ac76 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb
@@ -7,10 +7,9 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=41e8e060c26822886b592ab4765c756b"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz \
-           file://0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch \
           "
-SRC_URI[md5sum] = "2b5b7bc294698bf30a315a259ef9eec2"
-SRC_URI[sha256sum] = "196eedbc7f2dd792dae721b1159c7ac132255bb368226353c24d4d5fa7c7797a"
+SRC_URI[md5sum] = "71dd956bf686195127559671f1426cff"
+SRC_URI[sha256sum] = "c07115c23219390633798def30b7b51a0f79fdeb857e4b49632f17746d0ceb97"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/"
 UPSTREAM_CHECK_REGEX = "log4cplus-stable/(?P<pver>\d+(\.\d+)+)/"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch
new file mode 100644
index 0000000..9def41c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch
@@ -0,0 +1,46 @@
+From 67a8fa478a4484bc4dbfb3ac74e11be1dd5af594 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 19:35:48 -0800
+Subject: [PATCH] ensure the struct pointers are null initilized
+
+Do not delete if pointer is already null
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ expr.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/expr.c b/expr.c
+index 4059a32..5ffd0ad 100644
+--- a/expr.c
++++ b/expr.c
+@@ -189,10 +189,8 @@ int
+ expr_clone(struct expr_node *retp, const struct expr_node *node)
+ {
+ 	*retp = *node;
+-
++	struct expr_node *nlhs = 0, *nrhs = 0;
+ 	switch (node->kind) {
+-		struct expr_node *nlhs;
+-		struct expr_node *nrhs;
+ 
+ 	case EXPR_OP_ARGNO:
+ 	case EXPR_OP_SELF:
+@@ -236,8 +234,10 @@ expr_clone(struct expr_node *retp, const struct expr_node *node)
+ 		if (expr_alloc_and_clone(&nlhs, node->lhs, node->own_lhs) < 0) {
+ 			if (node->kind == EXPR_OP_CALL2
+ 			    && node->u.call.own_rhs) {
+-				expr_destroy(nrhs);
+-				free(nrhs);
++				if (nrhs) {
++					expr_destroy(nrhs);
++					free(nrhs);
++				}
+ 				return -1;
+ 			}
+ 		}
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch
index 8f1c4b9..2890373 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch
@@ -23,7 +23,7 @@
  	if (sysconfdir != NULL && *sysconfdir != '\0') {
  		/* No +1, we skip the initial period.  */
 -		syspath = malloc(strlen(sysconfdir) + sizeof FN);
-+		syspath = malloc(strlen(sysconfdir) + sizeof FN + 1);
++		syspath = malloc(strlen(sysconfdir) + sizeof FN + 2);
 +		syspath[strlen(sysconfdir) + sizeof FN + 1] = '\0';
  		if (syspath == NULL
 -		    || sprintf(syspath, "%s/%s", sysconfdir, FN + 1) < 0)
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
index bb21cbc..6b66c25 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -28,6 +28,7 @@
            file://0001-hook-Do-not-append-int-to-std-string.patch \
            file://include_unistd_nr.patch \
            file://0001-Bug-fix-for-data-type-length-judgment.patch \
+           file://0001-ensure-the-struct-pointers-are-null-initilized.patch \
            "
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
index c2d2180..08a0470 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
@@ -90,7 +90,9 @@
 "
 FILES_luajit-common = "${datadir}/${BPN}-${PV}"
 
-# Aarch64/mips64 is not supported in this release
+# Aarch64/mips64/ppc/ppc64 is not supported in this release
 COMPATIBLE_HOST_aarch64 = "null"
 COMPATIBLE_HOST_mipsarchn32 = "null"
 COMPATIBLE_HOST_mipsarchn64 = "null"
+COMPATIBLE_HOST_powerpc = "null"
+COMPATIBLE_HOST_powerpc64 = "null"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb
index 0fec4d1..6dedb02 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb
@@ -30,6 +30,9 @@
     oe_runmake -e install-bin DESTDIR=${D} PREFIX=${prefix}
     sed -i -e 's:${STAGING_BINDIR_NATIVE}/python3-native/python3:${USRBINPATH}/env python3:g' ${D}${bindir}/hg
 }
+PACKAGES =+ "${PN}-python"
 
 FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
 
+FILES_${PN}-python = "${nonarch_libdir}/${PYTHON_DIR}"
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.1.1.bb b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.1.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
index 90fd44e..d410dc6 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
@@ -11,8 +11,8 @@
 
 SRC_URI = "git://github.com/msgpack/msgpack-c \
            "
-# cpp-3.1.1
-SRCREV = "83a82e3eb512b18d4149cabb7eb43c7e8bc081af"
+# cpp-3.2.1
+SRCREV = "8085ab8721090a447cf98bb802d1406ad7afe420"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb b/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb
new file mode 100644
index 0000000..aedd53a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb
@@ -0,0 +1,28 @@
+DESCRIPTION="Protocol Buffers with small code size"
+LICENSE="Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9db4b73a55a3994384112efcdb37c01f"
+
+DEPENDS = "protobuf-native"
+
+SRC_URI = "git://github.com/nanopb/nanopb.git"
+SRCREV = "70f0de9877b1ce12abc0229d5df84db6349fcbfc"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pythonnative
+
+do_install_append() {
+    install -Dm 0755 ${S}/generator/nanopb_generator.py ${D}${bindir}/nanopb_generator.py
+    install -Dm 0755 ${S}/generator/protoc-gen-nanopb ${D}${bindir}/protoc-gen-nanopb
+    install -Dm 0755 ${S}/generator/proto/__init__.py ${D}${PYTHON_SITEPACKAGES_DIR}/proto/__init__.py
+}
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+FILES_${PN}-dev += "${libdir}/cmake/${BPN}"
+
+RDEPENDS_${PN} += "\
+   ${PYTHON_PN}-protobuf \
+   protobuf-compiler \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_git.bb b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.7.3.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_git.bb
rename to meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.7.3.bb
index 4399eda..86fe673 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.7.3.bb
@@ -4,11 +4,9 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f5f7c71504da070bcf4f090205ce1080"
 
-SRC_URI = "git://github.com/nlohmann/json.git"
+SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1"
 
-PV = "3.7.0+git${SRCPV}"
-
-SRCREV = "ea60d40f4a60a47d3be9560d8f7bc37c163fe47b"
+SRCREV = "e7b3b40b5a95bc74b9a7f662830a27c49ffc01b4"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch
new file mode 100644
index 0000000..7aa70fe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch
@@ -0,0 +1,96 @@
+From 5bfeffdf4b5de1c60a2ff0d1ddf65db2bb9a1533 Mon Sep 17 00:00:00 2001
+From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+Date: Tue, 19 Mar 2019 23:22:40 -0400
+Subject: [PATCH 3/3] Install both binaries and use libdir.
+
+This allows us to build with a shared library for other users while
+still providing the normal executable.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+
+Stolen from [1]
+
+[1] https://src.fedoraproject.org/rpms/nodejs/raw/master/f/0003-Install-both-binaries-and-use-libdir.patch
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
+---
+ configure.py     |  7 +++++++
+ tools/install.py | 31 ++++++++++++++-----------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index cfd4207..eb26f7d 100755
+--- a/configure.py
++++ b/configure.py
+@@ -552,6 +552,12 @@ parser.add_option('--shared',
+     help='compile shared library for embedding node in another project. ' +
+          '(This mode is not officially supported for regular applications)')
+ 
++parser.add_option('--libdir',
++    action='store',
++    dest='libdir',
++    default='lib',
++    help='a directory to install the shared library into')
++
+ parser.add_option('--without-v8-platform',
+     action='store_true',
+     dest='without_v8_platform',
+@@ -1095,6 +1101,7 @@ def configure_node(o):
+   if options.code_cache_path:
+     o['variables']['node_code_cache_path'] = options.code_cache_path
+   o['variables']['node_shared'] = b(options.shared)
++  o['variables']['libdir'] = options.libdir
+   node_module_version = getmoduleversion.get_version()
+ 
+   if sys.platform == 'darwin':
+diff --git a/tools/install.py b/tools/install.py
+index 028c32e..bf443c4 100755
+--- a/tools/install.py
++++ b/tools/install.py
+@@ -117,26 +117,23 @@ def subdir_files(path, dest, action):
+ 
+ def files(action):
+   is_windows = sys.platform == 'win32'
+-  output_file = 'node'
+   output_prefix = 'out/Release/'
++  output_libprefix = output_prefix
+ 
+-  if 'false' == variables.get('node_shared'):
+-    if is_windows:
+-      output_file += '.exe'
++  if is_windows:
++    output_bin = 'node.exe'
++    output_lib = 'node.dll'
+   else:
+-    if is_windows:
+-      output_file += '.dll'
+-    else:
+-      output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
+-      # GYP will output to lib.target except on OS X, this is hardcoded
+-      # in its source - see the _InstallableTargetInstallPath function.
+-      if sys.platform != 'darwin':
+-        output_prefix += 'lib.target/'
+-
+-  if 'false' == variables.get('node_shared'):
+-    action([output_prefix + output_file], 'bin/' + output_file)
+-  else:
+-    action([output_prefix + output_file], 'lib/' + output_file)
++    output_bin = 'node'
++    output_lib = 'libnode.' + variables.get('shlib_suffix')
++    # GYP will output to lib.target except on OS X, this is hardcoded
++    # in its source - see the _InstallableTargetInstallPath function.
++    if sys.platform != 'darwin':
++      output_libprefix += 'lib.target/'
++
++  action([output_prefix + output_bin], 'bin/' + output_bin)
++  if 'true' == variables.get('node_shared'):
++    action([output_libprefix + output_lib], variables.get('libdir') + '/' + output_lib)
+ 
+   if 'true' == variables.get('node_use_dtrace'):
+     action(['out/Release/node.d'], 'lib/dtrace/node.d')
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb
index e36995c..71a4763 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_10.17.0.bb
@@ -17,12 +17,13 @@
 
 SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
            file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
+           file://0003-Install-both-binaries-and-use-libdir.patch \
            file://0004-Make-compatibility-with-gcc-4.8.patch \
            file://0007-v8-don-t-override-ARM-CFLAGS.patch \
            "
 SRC_URI_append_class-target = " \
-           file://0005-Link-atomic-library.patch \
            file://0002-Using-native-torque.patch \
+           file://0005-Link-atomic-library.patch \
            "
 
 SRC_URI[md5sum] = "d5a56d0abf764a91f627f0690cd4b9f3"
@@ -57,6 +58,7 @@
 PACKAGECONFIG[icu] = "--with-intl=system-icu,--without-intl,icu"
 PACKAGECONFIG[libuv] = "--shared-libuv,,libuv"
 PACKAGECONFIG[nghttp2] = "--shared-nghttp2,,nghttp2"
+PACKAGECONFIG[shared] = "--shared"
 PACKAGECONFIG[zlib] = "--shared-zlib,,zlib"
 
 # We don't want to cross-compile during target compile,
@@ -99,6 +101,7 @@
    ./configure --prefix=${prefix} --without-snapshot --shared-openssl \
                --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH'), d)}" \
                --dest-os=linux \
+               --libdir=${D}${libdir} \
                ${ARCHFLAGS} \
                ${PACKAGECONFIG_CONFARGS}
 }
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
index 9ec77fd..e95f1cf 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
@@ -53,4 +53,5 @@
   "
 
 PACKAGECONFIG[sysfsgpio] = "--enable-sysfsgpio,--disable-sysfsgpio"
-PACKAGECONFIG ??= "sysfsgpio"
+PACKAGECONFIG[remote-bitbang] = "--enable-remote-bitbang,--disable-remote-bitbang"
+PACKAGECONFIG ??= "sysfsgpio remote-bitbang"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb b/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
new file mode 100644
index 0000000..4a27e4b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
@@ -0,0 +1,22 @@
+SUMMARY = "SQLite ORM light header only library for modern C++"
+HOMEPAGE = "https://github.com/fnc12/sqlite_orm"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b5bf5ee8bb16d8e19359efe11bdc3f2"
+
+inherit cmake
+
+DEPENDS += "sqlite3"
+
+SRCREV = "e8a9e9416f421303f4b8970caab26dadf8bae98b"
+SRC_URI = "git://github.com/fnc12/sqlite_orm;protocol=https"
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE += "-DSqliteOrm_BuildTests=OFF"
+
+BBCLASSEXTEND = "native nativesdk"
+
+FILES_${PN}-dev += "${libdir}/cmake/${BPN}"
+
+# Header-only library
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
\ No newline at end of file
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch
deleted file mode 100644
index a0c157f..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/configure.in.orig	2014-05-10 14:35:39.859147385 +0000
-+++ b/configure.in	2014-05-10 14:36:20.282925184 +0000
-@@ -554,8 +554,8 @@
- 	dnl make sure package configurator (xft-config or pkg-config
- 	dnl says that xft is present.
- 	    found_xft=yes
--	    XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
--	    XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
-+	    XFT_CFLAGS=`pkg-config --cflags xft fontconfig 2>/dev/null` || found_xft="no"
-+	    XFT_LIBS=`pkg-config --libs xft fontconfig 2>/dev/null` || found_xft="no"
- 	AC_MSG_RESULT([$found_xft])
- 	dnl make sure that compiling against Xft header file doesn't bomb
- 	if test "$found_xft" = "yes" ; then
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
index 8cc07bc..229acf3 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
+++ b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
@@ -16,31 +16,31 @@
 ===================================================================
 --- a/unix/configure.orig
 +++ b/unix/configure
-@@ -1432,6 +1432,7 @@ echo "$as_me: error: ${with_tclconfig} d
+@@ -1431,6 +1431,7 @@ echo "$as_me: error: ${with_tclconfig} d
  			`ls -d /usr/local/lib 2>/dev/null` \
  			`ls -d /usr/contrib/lib 2>/dev/null` \
  			`ls -d /usr/pkg/lib 2>/dev/null` \
 +			`ls -d /usr/share/tcltk/tcl8.6 2>/dev/null` \
+ 			`ls -d /usr/lib/tcl8.6 2>/dev/null` \
  			`ls -d /usr/lib 2>/dev/null` \
  			`ls -d /usr/lib64 2>/dev/null` \
- 			`ls -d /usr/local/lib/tcl8.6 2>/dev/null` \
 Index: a/unix/tcl.m4
 ===================================================================
 --- a/unix/tcl.m4.orig
 +++ b/unix/tcl.m4
-@@ -94,6 +94,7 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [
+@@ -93,6 +93,7 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [
  			`ls -d /usr/local/lib 2>/dev/null` \
  			`ls -d /usr/contrib/lib 2>/dev/null` \
  			`ls -d /usr/pkg/lib 2>/dev/null` \
 +			`ls -d /usr/share/tcltk/tcl8.6 2>/dev/null` \
+ 			`ls -d /usr/lib/tcl8.6 2>/dev/null` \
  			`ls -d /usr/lib 2>/dev/null` \
  			`ls -d /usr/lib64 2>/dev/null` \
- 			`ls -d /usr/local/lib/tcl8.6 2>/dev/null` \
-@@ -227,6 +228,7 @@ AC_DEFUN([SC_PATH_TKCONFIG], [
+@@ -226,6 +227,7 @@ AC_DEFUN([SC_PATH_TKCONFIG], [
  			`ls -d /usr/local/lib 2>/dev/null` \
  			`ls -d /usr/contrib/lib 2>/dev/null` \
  			`ls -d /usr/pkg/lib 2>/dev/null` \
-+			`ls -d /usr/share/tcltk/tk8.6 2>/dev/null` \
++			`ls -d /usr/share/tcltk/tcl8.6 2>/dev/null` \
+ 			`ls -d /usr/lib/tk8.6 2>/dev/null` \
  			`ls -d /usr/lib 2>/dev/null` \
  			`ls -d /usr/lib64 2>/dev/null` \
- 			`ls -d /usr/local/lib/tk8.6 2>/dev/null` \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
index d1bb710..4aa5d6b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
+++ b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
@@ -8,8 +8,8 @@
 -	XFT_LIBS=`xft-config --libs 2>/dev/null` || found_xft="no"
 -	if test "$found_xft" = "no" ; then
  	    found_xft=yes
- 	    XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
- 	    XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
+ 	    XFT_CFLAGS=`pkg-config --cflags xft fontconfig 2>/dev/null` || found_xft="no"
+ 	    XFT_LIBS=`pkg-config --libs xft fontconfig 2>/dev/null` || found_xft="no"
 -	fi
  	AC_MSG_RESULT([$found_xft])
  	dnl make sure that compiling against Xft header file doesn't bomb
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff
deleted file mode 100644
index 7d31f9f..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-Patch by Sergei Golovan (originally by Mike Markley and Chris Waters) fixes
-building on non-linux Debian architectures.
-
---- tk8.5-8.5.8.orig/unix/configure
-+++ tk8.5-8.5.8/unix/configure
-@@ -4447,6 +4447,9 @@
- 		if test "`uname -s`" = "AIX" ; then
- 		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
- 		fi
-+		if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then
-+		    tcl_cv_sys_version=NetBSD-Debian
-+		fi
- 	    fi
- 	fi
-
---- tk8.5-8.5.8.orig/unix/tcl.m4
-+++ tk8.5-8.5.8/unix/tcl.m4
-@@ -962,6 +962,9 @@
- 		if test "`uname -s`" = "AIX" ; then
- 		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
- 		fi
-+		if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then
-+		    tcl_cv_sys_version=NetBSD-Debian
-+		fi
- 	    fi
- 	fi
-     ])
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff
deleted file mode 100644
index ee38c2a..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff
+++ /dev/null
@@ -1,22 +0,0 @@
---- tk8.5-8.5.8.orig/unix/configure
-+++ tk8.5-8.5.8/unix/configure
-@@ -11070,7 +11070,7 @@
-     TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
- fi
- 
--TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
-+test -z "$TK_LIBRARY" && TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
- PRIVATE_INCLUDE_DIR='$(includedir)'
- HTML_DIR='$(DISTDIR)/html'
- TK_PKG_DIR='tk$(VERSION)'
---- tk8.5-8.5.8.orig/unix/configure.in
-+++ tk8.5-8.5.8/unix/configure.in
-@@ -607,7 +607,7 @@
-     TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
- fi
- 
--TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
-+test -z "$TK_LIBRARY" && TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
- PRIVATE_INCLUDE_DIR='$(includedir)'
- HTML_DIR='$(DISTDIR)/html'
- TK_PKG_DIR='tk$(VERSION)'
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.9.bb b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.9.bb
rename to meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
index 3d77670..b564e12 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.9.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
@@ -20,14 +20,11 @@
 SRC_URI = "\
     ${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
     file://confsearch.diff;striplevel=2 \
-    file://non-linux.diff;striplevel=2 \
-    file://tklibrary.diff;striplevel=2 \
     file://tkprivate.diff;striplevel=2 \
     file://fix-xft.diff \
-    file://configure.use.fontconfig.with.xft.patch \
 "
-SRC_URI[md5sum] = "e3cf6290999ee30651d75864eccfec63"
-SRC_URI[sha256sum] = "d3f9161e8ba0f107fe8d4df1f6d3a14c30cc3512dfc12a795daa367a27660dac"
+SRC_URI[md5sum] = "602a47ad9ecac7bf655ada729d140a94"
+SRC_URI[sha256sum] = "63df418a859d0a463347f95ded5cd88a3dd3aaa1ceecaeee362194bc30f3e386"
 
 S = "${WORKDIR}/${BPN}${PV}/unix"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch
index ab8042f..7c3b032 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch
@@ -1,21 +1,28 @@
-Add configure check for gtk2+ and objc++
+From 7957756a3dd16498cf7a75e1fb6675a33bc7f3dc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Nov 2016 01:20:33 -0700
+Subject: [PATCH] Add configure check for gtk2+ and objc++
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Upstream-Status: Pending
 
-Index: boinc-client_release-7.6-7.6.33/configure.ac
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/configure.ac
-+++ boinc-client_release-7.6-7.6.33/configure.ac
-@@ -64,6 +64,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX
+---
+ configure.ac | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index d81d795de4..7beeb34ae2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -63,6 +63,7 @@ m4_pattern_allow([AC_PROG_OBJCXX])
+ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX],)
  dnl ------
- AC_PROG_F77
  AC_PROG_CPP
 +AC_PROG_OBJCXX
  AC_PROG_MAKE_SET
  SAH_LINKS
  AC_LANG_PUSH(C)
-@@ -1081,6 +1082,8 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test
+@@ -1068,6 +1069,8 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test "x${enable_server}" = xyes  || test "x${
  AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes])
  AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so])
  
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch
index 4ae8d58..e060b1a 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch
@@ -1,13 +1,20 @@
-Check for gtk2+ only when manager is enabled
+From d53e9617fb6446780478bb13907efd111f241cd1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Nov 2016 01:20:33 -0700
+Subject: [PATCH] Check for gtk2+ only when manager is enabled
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Upstream-Status: Pending
 
-Index: boinc-client_release-7.6-7.6.33/configure.ac
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/configure.ac
-+++ boinc-client_release-7.6-7.6.33/configure.ac
-@@ -1033,6 +1033,11 @@ else
+---
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7beeb34ae2..35234c2762 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1018,6 +1018,11 @@ else
    AM_CONDITIONAL([GUI_GTK], false)
  fi
  
@@ -19,7 +26,7 @@
  dnl ---------- libNotify --------------------------------------------------
  if test "${enable_manager}" = yes ; then
    PKG_CHECK_MODULES(LIBNOTIFY, [libnotify])
-@@ -1082,7 +1087,6 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test
+@@ -1069,7 +1074,6 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test "x${enable_server}" = xyes  || test "x${
  AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes])
  AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so])
  
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch
index 0b057ea..ad4493f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch
@@ -1,13 +1,22 @@
+From 4f2dd929618f149087249f3c90cc056d5080b1e4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Nov 2016 01:20:33 -0700
+Subject: [PATCH] boinc: Add recipe for boinc-client
+
 Do not add prefix/lib to library search path
 let sysroot take care of that
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Upstream-Status: Inappropriate[Cross-compile specific]
 
-Index: boinc-client_release-7.6-7.6.33/m4/ax_check_gl.m4
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/m4/ax_check_gl.m4
-+++ boinc-client_release-7.6-7.6.33/m4/ax_check_gl.m4
+---
+ m4/ax_check_gl.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/ax_check_gl.m4 b/m4/ax_check_gl.m4
+index e26ce5b930..1e60c9266a 100644
+--- a/m4/ax_check_gl.m4
++++ b/m4/ax_check_gl.m4
 @@ -58,7 +58,7 @@ else
      else
        ax_try_lib="${ax_lib}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb
rename to meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.bb
index d472d32..1b0af55 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.bb
@@ -29,7 +29,7 @@
            ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk+ libnotify xcb-util libxscrnsaver', '', d)} \
            nettle \
 "
-SRCREV = "bd12338dbd29083daa5a4b022592ca31ff68cd98"
+SRCREV = "a432e1ccbf864f99c7b29a1645de38056915f944"
 BRANCH = "client_release/7/${PV}"
 SRC_URI = "git://github.com/BOINC/boinc;protocol=https;branch=${BRANCH} \
            file://boinc-AM_CONDITIONAL.patch \
@@ -74,11 +74,14 @@
 	sed -i -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' ${B}/${TARGET_SYS}-libtool
 }
 do_install_append() {
-	if [ -e ${D}${libdir}/systemd/system/boinc-client.service ]; then
-		install -D -m 0644 \
-		${D}${libdir}/systemd/system/boinc-client.service \
+	if [ -e ${D}${nonarch_libdir}/systemd/system/boinc-client.service ]; then
+                install -d ${D}${systemd_system_unitdir}
+		mv \
+		${D}${nonarch_libdir}/systemd/system/boinc-client.service \
 		${D}${systemd_system_unitdir}/boinc-client.service
-		rm -rf ${D}${libdir}/systemd
+		rmdir --ignore-fail-on-non-empty ${D}${nonarch_libdir}/systemd/system \
+                ${D}${nonarch_libdir}/systemd \
+                ${D}${nonarch_libdir}
 	fi
 }
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb b/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
index b4d4773..e4e454b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
@@ -12,3 +12,9 @@
 S = "${WORKDIR}/git"
 
 inherit cmake lib_package
+
+do_install_append () {
+	for lib in $(ls ${D}${libdir}/*-static.a); do
+		mv -v "${lib}" "$(echo ${lib} | sed s/-static//)"
+	done
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch
index b2a149b..fa029da 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch
@@ -9,19 +9,14 @@
  swig/python/CMakeLists.txt | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/swig/python/CMakeLists.txt b/swig/python/CMakeLists.txt
-index 128798b..391cef7 100644
 --- a/swig/python/CMakeLists.txt
 +++ b/swig/python/CMakeLists.txt
-@@ -49,7 +49,7 @@ ADD_DEFINITIONS(-DCMPI_PLATFORM_LINUX_GENERIC_GNU -DCMPI_VERSION=200)
+@@ -49,7 +49,7 @@ ADD_DEFINITIONS(-DCMPI_PLATFORM_LINUX_GE
  SET( NAME pyCmpiProvider )
  ADD_LIBRARY( ${NAME} SHARED ${SWIG_OUTPUT})
  #TARGET_LINK_LIBRARIES( ${NAME} ${PYTHON_LIBRARIES} )
 -TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION} )
-+TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION}m )
++TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION}${PYTHON_ABI} )
  TARGET_LINK_LIBRARIES( ${NAME} pthread )
  TARGET_LINK_LIBRARIES( ${NAME} dl )
  TARGET_LINK_LIBRARIES( ${NAME} util )
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
index 251c5d0..6c71d53 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
@@ -22,7 +22,9 @@
 inherit cmake python3native
 
 EXTRA_OECMAKE = "-DLIB='${baselib}' \
-                 -DPYTHON_INCLUDE_PATH=${STAGING_INCDIR}/python${PYTHON_BASEVERSION}"
+                 -DPYTHON_INCLUDE_PATH=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
+                 -DPYTHON_ABI=${PYTHON_ABI} \
+                 "
 
 # With Ninja it fails with:
 # ninja: error: build.ninja:282: bad $-escape (literal $ must be written as $$)
diff --git a/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch b/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch
new file mode 100644
index 0000000..ecfafce
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch
@@ -0,0 +1,24 @@
+From 771cd2a12db8b8c9a558f1a04958df8ed614f2e0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 14:06:50 +0100
+Subject: [PATCH] Fix builds with recent gettext
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index dedabd6..8833ac9 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -22,7 +22,7 @@
+ # along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
+ #
+ 
+-SUBDIRS = intl compat afm afmlib lib scripts src po states docs w32
++SUBDIRS = compat afm afmlib lib scripts src po states docs w32
+ 
+ EXTRA_DIST = README.ESCAPES README.DOS ascii.txt			\
+ asciifise.txt asciidkno.txt 88591.txt 88592.txt 88593.txt 88594.txt	\
diff --git a/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb b/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
index 2b6d14e..82791f5 100644
--- a/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
@@ -12,7 +12,8 @@
 
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
            file://enscript-autoconf.patch \
-"
+           file://0001-Fix-builds-with-recent-gettext.patch \
+           "
 
 inherit autotools gettext
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch
new file mode 100644
index 0000000..8ffc3be
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch
@@ -0,0 +1,27 @@
+help complier to use intrinsics, clang in few cases e.g. aarch64 can not
+and then requires linking with libm, its the only function needed from libm then
+its good to avoid needing it.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/include/fluent-bit/stream_processor/flb_sp_timeseries.h
++++ b/include/fluent-bit/stream_processor/flb_sp_timeseries.h
+@@ -207,7 +207,7 @@ void cb_forecast_calc(struct timeseries
+         result = b0 + b1 * (val->f64 + *forecast->latest_x);
+         break;
+     default:
+-        result = nan("");
++        result = __builtin_nan("");
+         break;
+     }
+ 
+@@ -283,7 +283,7 @@ void cb_forecast_r_calc(struct timeserie
+             result = ((val->i64 - b0) / b1) - *forecast->latest_x;
+             break;
+         default:
+-            result = nan("");
++            result = __builtin_nan("");
+             break;
+         }
+ 
diff --git a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch
new file mode 100644
index 0000000..a185789
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch
@@ -0,0 +1,38 @@
+Define CMake variables to indicate init system for target
+incase of cross compile, detecting systemd support based on
+host directory structure is not right thing to do
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.kheem@gmail.com>
+
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -317,7 +317,7 @@ if(FLB_BINARY)
+   install(TARGETS fluent-bit-bin RUNTIME DESTINATION ${FLB_INSTALL_BINDIR})
+ 
+   # Detect init system, install upstart, systemd or init.d script
+-  if(IS_DIRECTORY /lib/systemd/system)
++  if(IS_DIRECTORY /lib/systemd/system OR FLB_SYSTEMD)
+     set(FLB_SYSTEMD_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.service")
+     configure_file(
+       "${PROJECT_SOURCE_DIR}/init/systemd.in"
+@@ -325,7 +325,7 @@ if(FLB_BINARY)
+       )
+     install(FILES ${FLB_SYSTEMD_SCRIPT} DESTINATION /lib/systemd/system)
+     install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR})
+-  elseif(IS_DIRECTORY /usr/share/upstart)
++  elseif(IS_DIRECTORY /usr/share/upstart OR FLB_UPSTART)
+     set(FLB_UPSTART_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.conf")
+     configure_file(
+       "${PROJECT_SOURCE_DIR}/init/upstart.in"
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -70,6 +70,8 @@ option(FLB_RECORD_ACCESSOR    "Enable re
+ option(FLB_SYSTEM_STRPTIME    "Use strptime in system libc"  Yes)
+ option(FLB_STATIC_CONF        "Build binary using static configuration")
+ option(FLB_STREAM_PROCESSOR   "Enable Stream Processor"      Yes)
++option(FLB_SYSTEMD            "Enable systemd init system"   No)
++option(FLB_UPSTART            "Enable upstart init system"   No)
+ option(FLB_CORO_STACK_SIZE    "Set coroutine stack size")
+ 
+ # Metrics: Experimental Feature, disabled by default on 0.12 series
diff --git a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch
index abaf92c..67b3397 100644
--- a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch
@@ -3,16 +3,14 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Upstream-Status: Pending
 
-Index: fluent-bit-0.12.1/CMakeLists.txt
-===================================================================
---- fluent-bit-0.12.1.orig/CMakeLists.txt
-+++ fluent-bit-0.12.1/CMakeLists.txt
-@@ -325,7 +325,7 @@ if(FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME}
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -523,7 +523,7 @@ if(FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME}
    # Link to Jemalloc as an external dependency
    ExternalProject_Add(jemalloc
-     SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc
--    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc/configure ${AUTOCONF_HOST_OPT} --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
-+    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc/configure --with-jemalloc-prefix=je_ ${AUTOCONF_HOST_OPT} --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
+     SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.2.1
+-    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.2.1/configure ${AUTOCONF_HOST_OPT} --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
++    CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.2.1/configure ${AUTOCONF_HOST_OPT} --with-jemalloc-prefix=je_ --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
      CFLAGS=-std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
-     BUILD_COMMAND ${MAKE}
+     BUILD_COMMAND $(MAKE)
      INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/
diff --git a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.19.bb b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.19.bb
deleted file mode 100644
index e50aa71..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.19.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Fast data collector for Embedded Linux"
-HOMEPAGE = "http://fluentbit.io"
-BUGTRACKER = "https://github.com/fluent/fluent-bit/issues"
-
-SRC_URI = "http://fluentbit.io/releases/0.12/fluent-bit-${PV}.tar.gz \
-           file://jemalloc.patch \
-           "
-SRC_URI[md5sum] = "7c8708312ac9122faacf9e2a4751eb34"
-SRC_URI[sha256sum] = "23a81087edf0e2c6f2d49411c6a82308afc5224f67bbaa45729c057af62e9241"
-
-S = "${WORKDIR}/fluent-bit-${PV}"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
-
-DEPENDS = "zlib"
-INSANE_SKIP_${PN}-dev += "dev-elf"
-
-inherit cmake systemd
-
-EXTRA_OECMAKE = "-DGNU_HOST=${HOST_SYS} -DFLB_ALL=ON -DFLB_TD=1"
-
-# With Ninja it fails with:
-# ninja: error: build.ninja:134: bad $-escape (literal $ must be written as $$)
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-SYSTEMD_SERVICE_${PN} = "td-agent-bit.service"
-
-TARGET_CC_ARCH_append = " ${SELECTED_OPTIMIZATION}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb
new file mode 100644
index 0000000..aad1499
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Fast Log processor and Forwarder"
+DESCRIPTION = "Fluent Bit is a data collector, processor and  \
+forwarder for Linux. It supports several input sources and \
+backends (destinations) for your data. \
+"
+
+HOMEPAGE = "http://fluentbit.io"
+BUGTRACKER = "https://github.com/fluent/fluent-bit/issues"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+SECTION = "net"
+
+SRC_URI = "http://fluentbit.io/releases/1.3/fluent-bit-${PV}.tar.gz \
+           file://jemalloc.patch \
+           file://cross-build-init-system-detection.patch \
+           file://builtin-nan.patch \
+          "
+SRC_URI[md5sum] = "6eae6dfd0a874e5dd270c36e9c68f747"
+SRC_URI[sha256sum] = "e037c76c89269c8dc4027a08e442fefd2751b0f1e0f9c38f9a4b12d781a9c789"
+
+S = "${WORKDIR}/fluent-bit-${PV}"
+DEPENDS = "zlib bison-native flex-native"
+DEPENDS_append_libc-musl = " fts "
+
+INSANE_SKIP_${PN}-dev += "dev-elf"
+
+# Use CMake 'Unix Makefiles' generator
+OECMAKE_GENERATOR ?= "Unix Makefiles"
+
+# Fluent Bit build options
+# ========================
+
+# Host related setup
+EXTRA_OECMAKE += "-DGNU_HOST=${HOST_SYS} -DFLB_ALL=ON -DFLB_TD=1"
+
+# Disable LuaJIT and filter_lua support
+EXTRA_OECMAKE += "-DFLB_LUAJIT=Off -DFLB_FILTER_LUA=Off "
+
+# Disable Library and examples
+EXTRA_OECMAKE += "-DFLB_SHARED_LIB=Off -DFLB_EXAMPLES=Off "
+
+EXTRA_OECMAKE += "${@bb.utils.contains('DISTRO_FEATURES','systemd','-DFLB_SYSTEMD=On','',d)}"
+
+# Kafka Output plugin (disabled by default): note that when
+# enabling Kafka output plugin, the backend library librdkafka
+# requires 'openssl' as a dependency.
+#
+# DEPENDS += "openssl "
+# EXTRA_OECMAKE += "-DFLB_OUT_KAFKA=On "
+
+inherit cmake systemd features_check
+
+SYSTEMD_SERVICE_${PN} = "td-agent-bit.service"
+TARGET_CC_ARCH_append = " ${SELECTED_OPTIMIZATION}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb b/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.8.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.8.bb
index 898627b..926d885 100644
--- a/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.8.bb
@@ -22,8 +22,8 @@
     file://0004-Add-configure-option-to-find-qt5-native-tools.patch \
 "
 
-SRC_URI[archive.md5sum] = "60aedd08998160593199459dea8467fe"
-SRC_URI[archive.sha256sum] = "a416d22f02bdf3873ef82c5eb7f8e94146795811ef808e12b035ada88ef7b1a1"
+SRC_URI[archive.md5sum] = "2df8767c7399bee57a96296d46b4d5fb"
+SRC_URI[archive.sha256sum] = "60a6764ccf404a1668c140f11cc1f699290ab70daa1151bb58fed6139a28ac37"
 SRC_URI[qtplot.md5sum] = "0a481885a496092c77eb4017540b5cf6"
 SRC_URI[qtplot.sha256sum] = "6df317183ff62cc82f3dcf88207a267cd6478cb5147f55d7530c94f1ad5f4132"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.6.bb b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.8.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.6.bb
rename to meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.8.bb
index e5b9bc9..403956e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.8.bb
@@ -5,8 +5,8 @@
 LICENSE = "GPLv3"
 LIC_FILES_CHKSUM="file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
-# v1.9.6
-SRCREV = "1470a82a7f79110c79beea1ca5f2d3b0fd1a4668"
+# v1.9.8
+SRCREV = "8cd0266472aff59821718c4410e80f28978310f9"
 SRC_URI = "git://github.com/jirka-h/haveged.git \
 "
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch b/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
index fef2bc7..1af5d26 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
@@ -11,22 +11,18 @@
  Makefile | 5 -----
  1 file changed, 5 deletions(-)
 
-diff --git a/Makefile b/Makefile
-index 8b0f0c2..66a4317 100644
 --- a/Makefile
 +++ b/Makefile
-@@ -34,11 +34,6 @@ define REDIS_TEST_CONFIG
+@@ -35,12 +35,6 @@ define REDIS_TEST_CONFIG
  endef
  export REDIS_TEST_CONFIG
  
 -# Fallback to gcc when $CC is not in $PATH.
--CC:=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
+-CC:=$(shell sh -c 'type $${CC%% *} >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
+-CXX:=$(shell sh -c 'type $${CXX%% *} >/dev/null 2>/dev/null && echo $(CXX) || echo g++')
 -OPTIMIZATION?=-O3
 -WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
--DEBUG?= -g -ggdb
- REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG) $(ARCH)
- REAL_LDFLAGS=$(LDFLAGS) $(ARCH)
+-DEBUG_FLAGS?= -g -ggdb
+ REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS)
+ REAL_LDFLAGS=$(LDFLAGS)
  
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.13.1.bb b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.13.1.bb
rename to meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
index fae30d7..29f8de8 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.13.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
@@ -5,14 +5,15 @@
 DEPENDS = "redis"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
-SRC_URI = "git://github.com/redis/hiredis;protocol=git;rev=f58dd249d6ed47a7e835463c3b04722972281dbb \
+SRCREV = "685030652cd98c5414ce554ff5b356dfe8437870"
+SRC_URI = "git://github.com/redis/hiredis;protocol=git \
            file://0001-Makefile-remove-hardcoding-of-CC.patch"
 
 S = "${WORKDIR}/git"
 
 inherit autotools-brokensep pkgconfig
 
-EXTRA_OEMAKE = "PREFIX=${prefix}"
+EXTRA_OEMAKE = "PREFIX=${prefix} LIBRARY_PATH=${baselib}"
 
 # By default INSTALL variable in Makefile is equal to 'cp -a', which preserves
 # ownership and causes host-user-contamination QA issue.
diff --git a/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch b/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch
new file mode 100644
index 0000000..e48dfb3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch
@@ -0,0 +1,24 @@
+From 3349812de0598ca7722e0b7c7b7e5d48bd79bea9 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 14:01:18 +0100
+Subject: [PATCH] Fix builds with recent gettext
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 548fea7..cf01c5e 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in
+ AUTOMAKE_OPTIONS = no-texinfo.tex
+ 
+-SUBDIRS = intl src doc po man
++SUBDIRS = src doc po man
+ 
+ BUILT_SOURCES = 
+ 
diff --git a/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb b/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
index f2891df..f8d63d4 100644
--- a/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
@@ -14,7 +14,8 @@
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
            file://0001-src-indent.c-correct-the-check-for-locale.h.patch \
            file://0001-Makefile.am-remove-regression-dir.patch \
-"
+           file://0001-Fix-builds-with-recent-gettext.patch \
+           "
 SRC_URI[md5sum] = "4764b6ac98f6654a35da117b8e5e8e14"
 SRC_URI[sha256sum] = "e77d68c0211515459b8812118d606812e300097cfac0b4e9fb3472664263bb8b"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
index 8505ea3..f6a7956 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
@@ -1,17 +1,17 @@
-From 67d808b8739817c122bed8ba1a8308d01cb5ad0b Mon Sep 17 00:00:00 2001
+From a20feee4963bc38975fbaf44bbe85a31825f59db Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 6 Apr 2019 17:28:28 -0700
-Subject: [PATCH] Fix parallel build (fix port-internal make dependencies) on
- many cores
+Subject: [PATCH 1/3] Fix parallel build (fix port-internal make dependencies)
+ on many cores
 
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/lcdproc/lcdproc/pull/142]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  server/drivers/Makefile.am | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/server/drivers/Makefile.am b/server/drivers/Makefile.am
-index 0c23a9b..6777047 100644
+index e08f2b2d..4fd2e3f1 100644
 --- a/server/drivers/Makefile.am
 +++ b/server/drivers/Makefile.am
 @@ -47,11 +47,11 @@ CwLnx_LDADD =        libLCD.a libbignum.a
@@ -29,5 +29,5 @@
  imon_LDADD =         libLCD.a libbignum.a
  imonlcd_LDADD =      libLCD.a
 -- 
-2.21.0
+2.24.1
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch
new file mode 100644
index 0000000..eb866bf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch
@@ -0,0 +1,41 @@
+From d447a05ee560ba5894d2ed4cd93d0475c2f3c08e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 17 Dec 2019 17:39:32 -0800
+Subject: [PATCH 2/3] Include <limits.h> for PATH_MAX definition
+
+musl libc exposes the missing include
+
+Upstream-Status: Submitted [https://github.com/lcdproc/lcdproc/pull/142]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ server/drivers/hidraw_lib.c  | 1 +
+ server/drivers/linux_input.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/server/drivers/hidraw_lib.c b/server/drivers/hidraw_lib.c
+index 49b03f20..3b51f279 100644
+--- a/server/drivers/hidraw_lib.c
++++ b/server/drivers/hidraw_lib.c
+@@ -8,6 +8,7 @@
+ #include <dirent.h>
+ #include <errno.h>
+ #include <fcntl.h>
++#include <limits.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+diff --git a/server/drivers/linux_input.c b/server/drivers/linux_input.c
+index 5b914d4c..6fcfc591 100644
+--- a/server/drivers/linux_input.c
++++ b/server/drivers/linux_input.c
+@@ -5,6 +5,7 @@
+ 
+ #include <dirent.h>
+ #include <errno.h>
++#include <limits.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch
new file mode 100644
index 0000000..e39e9bd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch
@@ -0,0 +1,35 @@
+From 7fd144f101fa5c9316d3468ed26f55629afe1305 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 17 Dec 2019 17:55:54 -0800
+Subject: [PATCH 3/3] Fix non x86 platforms on musl
+
+Musl only specifies in/outb for x86/x86. Use the fallback path in case
+musl is used.
+
+This should fail compilation during the linking stage but for some reason
+does not. Will do if -Werror=implicit-function-declaration is specified.
+
+Original here: https://github.com/openwrt/packages/blob/master/utils/lcdproc/patches/110-in-outb.patch
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ server/drivers/port.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/server/drivers/port.h b/server/drivers/port.h
+index c584cd4e..bde235b3 100644
+--- a/server/drivers/port.h
++++ b/server/drivers/port.h
+@@ -94,7 +94,7 @@ static inline int port_deny_multiple(unsigned short port, unsigned short count);
+ /*  ---------------------------- Linux ------------------------------------ */
+ /*  Use ioperm, inb and outb in <sys/io.h> (Linux) */
+ /*  And iopl for higher addresses of PCI LPT cards */
+-#if defined HAVE_IOPERM
++#if defined(__GLIBC__) || (defined(__x86__) || defined(__x86_64__))
+ 
+ /* Glibc2 and Glibc1 */
+ # ifdef HAVE_SYS_IO_H
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
index 7ddc55f..275b984 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
@@ -7,22 +7,25 @@
 DEPENDS = "ncurses lirc"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760 \
-                    file://README.md;beginline=107;md5=5c927ce1742d6d5cddc45b7ad6230f75"
+                    file://README.md;beginline=107;md5=5db392f043253a2d64b1737068ce6b58"
 
-BASEPV = "0.5.9"
-PV = "${BASEPV}+git${SRCPV}"
-SRCREV = "e08546c13a4157ed98cd4a8e9086e7acd66f93c0"
+PV = "0.5.9+git${SRCPV}"
+SRCREV = "3a3d622d9bb74c44fa67bc20573751a207514134"
 SRC_URI = "git://github.com/lcdproc/lcdproc \
            file://0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch \
+           file://0002-Include-limits.h-for-PATH_MAX-definition.patch \
+           file://0003-Fix-non-x86-platforms-on-musl.patch \
            "
 
 S = "${WORKDIR}/git"
 
 inherit autotools pkgconfig update-rc.d
 
-LCD_DRIVERS ?= "all,!irman,!svga"
-LCD_DRIVERS_append_aarch64 = ",!serialVFD"
-LCD_DRIVERS_append_arm = ",!serialVFD"
+LCD_DRIVERS ?= "all,!irman,!svga${SERIALVFD}"
+SERIALVFD ?= ""
+SERIALVFD_libc-musl = ",!serialVFD"
+SERIALVFD_libc-musl_x86 = ""
+SERIALVFD_libc-musl_x86-64 = ""
 
 LCD_DEFAULT_DRIVER ?= "curses"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.23.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.23.bb
index 761619d..3f4eec2 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.23.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.23.bb
@@ -17,7 +17,7 @@
 
 S = "${WORKDIR}/git"
 
-FILES_${PN} += "${libdir}/python2.7/dist-packages ${libdir}/python3.7/site-packages"
+FILES_${PN} += "${libdir}/python2.7/dist-packages ${libdir}/python3.*/site-packages"
 
 PACKAGECONFIG ??= "python3 lvm dm kmod parted fs escrow btrfs crypto mdraid kbd mpath nvdimm"
 PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch
new file mode 100644
index 0000000..3ecbfce
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch
@@ -0,0 +1,42 @@
+From 95d4df3b713925e2c4894a2e4d50b06df861d9ef Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Dec 2019 23:37:40 -0800
+Subject: [PATCH] CheckPlatformSupport.cmake: Do not hardcode lib path
+
+Using CMAKE_INSTALL_LIBDIR ensures that we can build for multilib env
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libcec/cmake/CheckPlatformSupport.cmake | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/libcec/cmake/CheckPlatformSupport.cmake b/src/libcec/cmake/CheckPlatformSupport.cmake
+index 2d7102f..55e78f8 100644
+--- a/src/libcec/cmake/CheckPlatformSupport.cmake
++++ b/src/libcec/cmake/CheckPlatformSupport.cmake
+@@ -224,16 +224,16 @@ else()
+ 
+       if (${PYTHON_MAJOR_VERSION} EQUAL 2)
+         install(TARGETS     ${SWIG_MODULE_cec_REAL_NAME}
+-                DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH}/cec)
++                DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH}/cec)
+         install(FILES       ${CMAKE_BINARY_DIR}/src/libcec/cec.py
+-                DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
++                DESTINATION l${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
+         install(FILES ${CMAKE_SOURCE_DIR}/src/libcec/cmake/__init__.py
+-                DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/cec)
++                DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/cec)
+       else()
+         install(TARGETS     ${SWIG_MODULE_cec_REAL_NAME}
+-                DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH})
++                DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH})
+         install(FILES       ${CMAKE_BINARY_DIR}/src/libcec/cec.py
+-                DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
++                DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
+       endif()
+     endif()
+   endif()
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
index eaf6b9b..8d5a824 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
@@ -13,7 +13,8 @@
 
 SRCREV = "3bbd4321618503d14008387a72fabb6743878831"
 SRC_URI = "git://github.com/Pulse-Eight/libcec.git \
-"
+           file://0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch \
+          "
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.1.0.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.1.0.bb
index 43c1fd5..48dec47 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.1.0.bb
@@ -8,7 +8,7 @@
 
 inherit autotools pkgconfig pythonnative
 
-SRCREV = "62ec804736435fa34e37e66e228e17e2aacee1d7"
+SRCREV = "3df02d4d0e9008771e8622fdc10de8333b3f0d85"
 SRC_URI = "git://github.com/libimobiledevice/libplist;protocol=https \
            "
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch b/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch
new file mode 100644
index 0000000..321b412
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch
@@ -0,0 +1,37 @@
+From 066c49158a71ea77598c9e1ae16bba63d6ac6bb5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 23:41:35 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs instead of hardcoding lib path
+
+Upstream-Status: Submitted [https://github.com/Jacajack/liblightmodbus/pull/12]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ce6cc88..bee83aa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -242,14 +242,14 @@ if ( DEFINED AVR )
+ 	)
+ endif( )
+ 
+-
++include(GNUInstallDirs)
+ #Installation
+ install( 
+ 	TARGETS lightmodbus
+-	ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/"
++	ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/"
+ )
+ 
+ #Install headers
+ install(
+ 	DIRECTORY "${CMAKE_SOURCE_DIR}/include/" DESTINATION "${CMAKE_INSTALL_PREFIX}/include/" FILES_MATCHING PATTERN "*.h"
+-)
+\ No newline at end of file
++)
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
index 1e35f08..7fc5997 100644
--- a/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
@@ -7,7 +7,9 @@
 
 inherit cmake pkgconfig
 
-SRC_URI = "git://github.com/Jacajack/liblightmodbus.git;protocol=https"
+SRC_URI = "git://github.com/Jacajack/liblightmodbus.git;protocol=https \
+           file://0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch \
+          "
 SRCREV = "59d2b405f95701e5b04326589786dbb43ce49e81"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb b/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb
index b205186..82503a1 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb
@@ -22,9 +22,13 @@
 # WORKDIR/libqb/1.0.3+gitAUTOINC+c235284b5f-r0/recipe-sysroot-native/usr/bin/i586-oe-linux/../../libexec/i586-oe-linux/gcc/i586-oe-linux/8.1.0/ld: error: conftest.ld: SECTIONS seen after other input files; try -T/--script
 # WORKDIR/libqb/1.0.3+gitAUTOINC+c235284b5f-r0/recipe-sysroot-native/usr/bin/i586-oe-linux/../../libexec/i586-oe-linux/gcc/i586-oe-linux/8.1.0/ld: internal error in write_sections, at ../../gold/reloc.cc:791
 # collect2: error: ld returned 1 exit status
-EXTRA_OECONF_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' --enable-nosection-fallback', '', d)}"
+NOSECTION_FALLBACK = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '--enable-nosection-fallback', '', d)}"
+NOSECTION_FALLBACK_toolchain-clang_mips64 = "--enable-nosection-fallback"
+
+EXTRA_OECONF += "${NOSECTION_FALLBACK}"
 
 CFLAGS += "-pthread -D_REENTRANT"
+
 do_configure_prepend() {
     ( cd ${S}
     ${S}/autogen.sh )
diff --git a/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb b/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb
index 4ede3c8..c61d7c9 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb
@@ -17,6 +17,11 @@
 # Perl5 is for tests only
 EXTRA_OECONF = "--without-perl5 --with-mnttab=/proc/mounts"
 
+# use with caution - default properties are configured to trace
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[log4cplus] = "--with-log4cplus,--without-log4cplus,log4cplus"
+PACKAGECONFIG[logging] = "--enable-logging,--disable-logging,"
+
 inherit autotools pkgconfig
 
 FILES_statgrab = "${bindir}/statgrab"
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_60.5.2.bb b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_60.5.2.bb
index 41a79da..f52bcca 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_60.5.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_60.5.2.bb
@@ -56,7 +56,7 @@
 "
 
 # Without this, JS_Init() will fail for mips64.
-EXTRA_OECONF_append_mips64 = " --with-intl-api=build"
+EXTRA_OECONF_append_mipsarch = " --with-intl-api=build"
 
 EXTRA_OECONF_append_mipsarch = " --disable-ion"
 EXTRA_OECONF_append_riscv64 = " --disable-ion"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-build-create-tests-directory-for-split-builds.patch b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-build-create-tests-directory-for-split-builds.patch
deleted file mode 100644
index d94b3de..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-build-create-tests-directory-for-split-builds.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 114fe5067b58a2434b44855eee48f865186fe0fa Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Tue, 5 Nov 2019 22:26:23 +0000
-Subject: [PATCH] build: create tests directory for split builds
-
-When `--disable-dependency-tracking` is in effect with separate build
-directory, the tests directory isn't created as a result of the
-dependency generation, which leads to a build race for the tests
-directory being created and failures:
-
-  Making all in .
-  make[2]: Entering directory 'TOPDIR/build/tmp/work/riscv64-yoe-linux-musl/ostree/2019.5-r0/build'
-  (echo '[Test]' > tests/test-local-pull-depth.sh.test.tmp; \
-  echo 'Type=session' >> tests/test-local-pull-depth.sh.test.tmp; \
-  echo 'Exec=env G_TEST_SRCDIR=/usr/libexec/installed-tests/libostree G_TEST_BUILDDIR=/usr/libexec/installed-tests/libostree /usr/libexec/installed-tests/libostree/test-local-pull-depth.sh' >> tests/test-local-pull-depth.sh.test.tmp; \
-  mv tests/test-local-pull-depth.sh.test.tmp tests/test-local-pull-depth.sh.test)
-  /bin/sh: tests/test-local-pull-depth.sh.test.tmp: No such file or directory
-  /bin/sh: line 1: tests/test-local-pull-depth.sh.test.tmp: No such file or directory
-  /bin/sh: line 2: tests/test-local-pull-depth.sh.test.tmp: No such file or directory
-  mv: cannot stat 'tests/test-local-pull-depth.sh.test.tmp': No such file or directory
-  make[2]: *** [Makefile:9282: tests/test-local-pull-depth.sh.test] Error 1
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-Upstream-Status: Pending
----
- buildutil/glib-tap.mk | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/buildutil/glib-tap.mk b/buildutil/glib-tap.mk
-index 34b8f21ea26a..9a944a0acc88 100644
---- a/buildutil/glib-tap.mk
-+++ b/buildutil/glib-tap.mk
-@@ -116,6 +116,7 @@ installed_testcases = $(test_programs) $(installed_test_programs) \
- installed_test_meta_DATA = $(installed_testcases:=.test)
- 
- %.test: %$(EXEEXT) Makefile
-+	@$(MKDIR_P) $(dir $@)
- 	$(AM_V_GEN) (echo '[Test]' > $@.tmp; \
- 	echo 'Type=session' >> $@.tmp; \
- 	echo 'Exec=env G_TEST_SRCDIR=$(installed_testdir) G_TEST_BUILDDIR=$(installed_testdir) $(installed_testdir)/$(notdir $<)' >> $@.tmp; \
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-macros-Add-TEMP_FAILURE_RETRY-for-musl.patch b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-macros-Add-TEMP_FAILURE_RETRY-for-musl.patch
deleted file mode 100644
index d8c044c..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-macros-Add-TEMP_FAILURE_RETRY-for-musl.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 5a4f2ddb0a6c656b425a3caa41f5af766ed5f44b Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Mon, 9 Sep 2019 14:19:18 +0100
-Subject: [PATCH] macros: Add TEMP_FAILURE_RETRY for musl
-
-TEMP_FAILURE_RETRY is glibc specific, add a definition for musl.
-
-See https://github.com/ostreedev/ostree/issues/731
-
-Signed-off-by: Leon Woestenberg <leon@sidebranch.com>
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-Upstream-Status: Accepted [https://gitlab.gnome.org/GNOME/libglnx/commit/15c06468804014fc49f6f340132930703f919b19]
----
- glnx-macros.h | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/libglnx.glnx-macros.h b/libglnx/glnx-macros.h
-index 6d8aca93f8a3..700fc75ceed0 100644
---- a/libglnx.glnx-macros.h
-+++ b/libglnx/glnx-macros.h
-@@ -31,6 +31,16 @@ G_BEGIN_DECLS
- /* All of these are for C only. */
- #ifndef __GI_SCANNER__
- 
-+/* fixes builds against musl, taken from glibc unistd.h */
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(expression) \
-+  (__extension__                                                              \
-+    ({ long int __result;                                                     \
-+       do __result = (long int) (expression);                                 \
-+       while (__result == -1L && errno == EINTR);                             \
-+       __result; }))
-+#endif
-+
- /* Taken from https://github.com/systemd/systemd/src/basic/string-util.h
-  * at revision v228-666-gcf6c8c4
-  */
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-tests-Handle-EPIPE-failures-when-head-terminates.patch b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-tests-Handle-EPIPE-failures-when-head-terminates.patch
deleted file mode 100644
index fdb733e..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-tests-Handle-EPIPE-failures-when-head-terminates.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From fb519f0361565cad0d340095263a1e8866ec4f89 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Thu, 31 Oct 2019 11:30:00 +0000
-Subject: [PATCH 1/3] tests: Handle EPIPE failures when head terminates
-
-When using musl, it appears that the default is line buffered output, so
-when `head -1` reads from a pipe we have to handle the source end of the
-pipe getting EPIPE.
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-Upstream-Status: Accepted [v2019.6]
----
- tests/pull-test.sh            | 2 +-
- tests/test-pull-mirrorlist.sh | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/tests/pull-test.sh b/tests/pull-test.sh
-index 0a97a1195582..2cfd8e02f790 100644
---- a/tests/pull-test.sh
-+++ b/tests/pull-test.sh
-@@ -177,7 +177,7 @@ if ! skip_one_without_user_xattrs; then
-     ${CMD_PREFIX} ostree --repo=cacherepo pull-local ostree-srv/gnomerepo main
-     rev=$(ostree --repo=cacherepo rev-parse main)
-     ${CMD_PREFIX} ostree --repo=cacherepo ls -R -C main > ls.txt
--    regfile_hash=$(grep -E -e '^-0' ls.txt | head -1 | awk '{ print $5 }')
-+    regfile_hash=$((grep -E -e '^-0' ls.txt || true) | head -1 | awk '{ print $5 }')
-     ${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false corruptrepo $(cat httpd-address)/ostree/corruptrepo
-     # Make this a loop so in the future we can add more object types like commit etc.
-     for object in ${regfile_hash}.file; do
-diff --git a/tests/test-pull-mirrorlist.sh b/tests/test-pull-mirrorlist.sh
-index 4e44852d3971..85ff66e99f8e 100755
---- a/tests/test-pull-mirrorlist.sh
-+++ b/tests/test-pull-mirrorlist.sh
-@@ -47,12 +47,12 @@ setup_mirror content_mirror3
- 
- # Let's delete a file from 1 so that it falls back on 2
- cd ${test_tmpdir}/content_mirror1/ostree/gnomerepo
--filez=$(find objects/ -name '*.filez' | head -n 1)
-+filez=$((find objects/ -name '*.filez' || true) | head -n 1)
- rm ${filez}
- 
- # Let's delete a file from 1 and 2 so that it falls back on 3
- cd ${test_tmpdir}/content_mirror1/ostree/gnomerepo
--filez=$(find objects/ -name '*.filez' | head -n 1)
-+filez=$((find objects/ -name '*.filez' || true) | head -n 1)
- rm ${filez}
- cd ${test_tmpdir}/content_mirror2/ostree/gnomerepo
- rm ${filez}
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-tests-core-Fallback-to-en_US.UTF-8-locale.patch b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-tests-core-Fallback-to-en_US.UTF-8-locale.patch
deleted file mode 100644
index dcafb09..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0001-tests-core-Fallback-to-en_US.UTF-8-locale.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 4d17cd917fe4fb67d2f9e4881b6693ac7289f423 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Wed, 30 Oct 2019 07:55:41 +0000
-Subject: [PATCH 1/4] tests/core: Fallback to en_US.UTF-8 locale
-
-A number of tests expect explicit left/right single quotes in their
-messages, which will never happen in the C locale. Change so we pick a
-likely UTF-8 locale, or fail if we can't find one.
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-Upstream-Status: Accepted [v2019.6]
----
- tests/libtest-core.sh | 12 ++++--------
- 1 file changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/tests/libtest-core.sh b/tests/libtest-core.sh
-index f6f94288fc61..bc191332c916 100644
---- a/tests/libtest-core.sh
-+++ b/tests/libtest-core.sh
-@@ -35,15 +35,11 @@ assert_not_reached () {
- }
- 
- # Some tests look for specific English strings. Use a UTF-8 version
--# of the C (POSIX) locale if we have one, or fall back to POSIX
-+# of the C (POSIX) locale if we have one, or fall back to en_US.UTF-8
- # (https://sourceware.org/glibc/wiki/Proposals/C.UTF-8)
--if locale -a | grep '^C.UTF-8$' >/dev/null; then
--    export LC_ALL=C.UTF-8
--elif locale -a | grep '^C.utf8$' >/dev/null; then
--    export LC_ALL=C.utf8
--else
--    export LC_ALL=C
--fi
-+export LC_ALL=$(locale -a | grep -Ee '\.(UTF-8|utf8)' | grep -iEe '^(C|en_US)' | head -1 || true)
-+if [ -z "${LC_ALL}" ]; then fatal "Can't find suitable UTF-8 locale"; fi
-+
- # A GNU extension, used whenever LC_ALL is not C
- unset LANGUAGE
- 
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0002-tests-core-Assume-C.UTF-8-if-locale-isn-t-found.patch b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0002-tests-core-Assume-C.UTF-8-if-locale-isn-t-found.patch
deleted file mode 100644
index 5ab9c8f..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0002-tests-core-Assume-C.UTF-8-if-locale-isn-t-found.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3d48021fb0892721fab8359b49470e521aaed493 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Thu, 31 Oct 2019 11:28:07 +0000
-Subject: [PATCH 2/3] tests/core: Assume C.UTF-8 if locale isn't found
-
-When building with musl there's no locale command, also its default
-locale is C.UTF-8, so just get C.UTF-8 if we can't find locale.
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-Upstream-Status: Accepted [v2019.6]
----
- tests/libtest-core.sh | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/tests/libtest-core.sh b/tests/libtest-core.sh
-index bc191332c916..46aafab03cc8 100644
---- a/tests/libtest-core.sh
-+++ b/tests/libtest-core.sh
-@@ -37,9 +37,15 @@ assert_not_reached () {
- # Some tests look for specific English strings. Use a UTF-8 version
- # of the C (POSIX) locale if we have one, or fall back to en_US.UTF-8
- # (https://sourceware.org/glibc/wiki/Proposals/C.UTF-8)
--export LC_ALL=$(locale -a | grep -Ee '\.(UTF-8|utf8)' | grep -iEe '^(C|en_US)' | head -1 || true)
--if [ -z "${LC_ALL}" ]; then fatal "Can't find suitable UTF-8 locale"; fi
--
-+#
-+# If we can't find the locale command assume we have support for C.UTF-8
-+# (e.g. musl based systems)
-+if type -p locale >/dev/null; then
-+    export LC_ALL=$(locale -a | grep -Ee '\.(UTF-8|utf8)' | grep -iEe '^(C|en_US)' | head -1 || true)
-+    if [ -z "${LC_ALL}" ]; then fatal "Can't find suitable UTF-8 locale"; fi
-+else
-+    export LC_ALL=C.UTF-8
-+fi
- # A GNU extension, used whenever LC_ALL is not C
- unset LANGUAGE
- 
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0003-tests-Avoid-musl-failure-with-cp-a.patch b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0003-tests-Avoid-musl-failure-with-cp-a.patch
deleted file mode 100644
index 834617c..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/0003-tests-Avoid-musl-failure-with-cp-a.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From abf1a7392b2fa1945286a39a35190d74fe141e52 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Thu, 31 Oct 2019 17:09:36 +0000
-Subject: [PATCH 3/3] tests: Avoid musl failure with `cp -a`
-
-When copying the tree, using musl and GNU coreutils, something gets confused
-when setting the ownership of symlinks and the copy fails with:
-
-  cp: failed to preserve ownership for osdata-devel/bin: Not supported
-
-Rework using tar to avoid the problem.
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-Upstream-Status: Accepted [v2019.6]
----
- tests/libtest.sh        | 4 +++-
- tests/test-admin-gpg.sh | 4 +++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/tests/libtest.sh b/tests/libtest.sh
-index ba00073a10a7..3f5fd931bc1e 100755
---- a/tests/libtest.sh
-+++ b/tests/libtest.sh
-@@ -440,7 +440,9 @@ EOF
-     ${CMD_PREFIX} ostree --repo=${test_tmpdir}/testos-repo commit --add-metadata-string version=1.0.10 -b testos/buildmaster/x86_64-runtime -s "Build"
- 
-     cd ${test_tmpdir}
--    cp -a osdata osdata-devel
-+    rm -rf osdata-devel
-+    mkdir osdata-devel
-+    tar -C osdata -cf - . | tar -C osdata-devel -xf -
-     cd osdata-devel
-     mkdir -p usr/include
-     echo "a development header" > usr/include/foo.h
-diff --git a/tests/test-admin-gpg.sh b/tests/test-admin-gpg.sh
-index 1f50c8a9a508..dc776743776c 100755
---- a/tests/test-admin-gpg.sh
-+++ b/tests/test-admin-gpg.sh
-@@ -90,7 +90,9 @@ EOF
-     ${CMD_PREFIX} ostree --repo=${test_tmpdir}/testos-repo commit --add-metadata-string version=1.0.10 -b testos/buildmaster/x86_64-runtime -s "Build" --gpg-sign=$keyid --gpg-homedir=${test_tmpdir}/gpghome
- 
-     cd ${test_tmpdir}
--    cp -a osdata osdata-devel
-+    rm -rf osdata-devel
-+    mkdir osdata-devel
-+    tar -C osdata -cf - . | tar -C osdata-devel -xf -
-     cd osdata-devel
-     mkdir -p usr/include
-     echo "a development header" > usr/include/foo.h
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2019.5.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2019.6.bb
similarity index 73%
rename from meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2019.5.bb
rename to meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2019.6.bb
index b3b34a1..bcf511b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2019.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2019.6.bb
@@ -24,24 +24,20 @@
 
 SRC_URI = " \
     gitsm://github.com/ostreedev/ostree \
-    file://0001-macros-Add-TEMP_FAILURE_RETRY-for-musl.patch \
     file://run-ptest \
-    file://0001-tests-core-Fallback-to-en_US.UTF-8-locale.patch \
-    file://0001-tests-Handle-EPIPE-failures-when-head-terminates.patch \
-    file://0002-tests-core-Assume-C.UTF-8-if-locale-isn-t-found.patch \
-    file://0003-tests-Avoid-musl-failure-with-cp-a.patch \
-    file://0001-build-create-tests-directory-for-split-builds.patch \
 "
-SRCREV = "980ca07b03b3aa7e0012729dd6c84b0878775d93"
+SRCREV = "43706202f7de2ce0c829a46caab350ae1656f6ad"
 
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+)"
 
 S = "${WORKDIR}/git"
 
-inherit autotools bash-completion gobject-introspection gtk-doc pkgconfig ptest-gnome systemd
+inherit autotools bash-completion gobject-introspection gtk-doc manpages pkgconfig ptest-gnome systemd
 
 # Package configuration - match ostree defaults, but without rofiles-fuse
 # otherwise we introduce a dependendency on meta-filesystems
+#
+# If running with ptest, both soup (for trivial-httpd) and xattr are required
 PACKAGECONFIG ??= " \
     ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
@@ -52,16 +48,19 @@
 # soup or curl - https://github.com/ostreedev/ostree/issues/1897
 PACKAGECONFIG_class-native ??= " \
     ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+    builtin-grub2-mkconfig \
     soup \
 "
 
 PACKAGECONFIG[avahi] = "--with-avahi, --without-avahi, avahi"
+PACKAGECONFIG[builtin-grub2-mkconfig] = "--with-builtin-grub2-mkconfig, --without-builtin-grub2-mkconfig"
 PACKAGECONFIG[curl] = "--with-curl, --without-curl, curl"
 PACKAGECONFIG[dracut] = "--with-dracut, --without-dracut"
+PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
 PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls"
 PACKAGECONFIG[libarchive] = "--with-libarchive, --without-libarchive, libarchive"
 PACKAGECONFIG[libmount] = "--with-libmount, --without-libmount, util-linux"
-PACKAGECONFIG[man] = "--enable-man, --disable-man, libxslt-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[manpages] = "--enable-man, --disable-man, libxslt-native docbook-xsl-stylesheets-native"
 PACKAGECONFIG[mkinitcpio] = "--with-mkinitcpio, --without-mkinitcpio"
 PACKAGECONFIG[no-http2] = "--disable-http2, --enable-http2"
 PACKAGECONFIG[openssl] = "--with-crypto=openssl, , openssl"
@@ -84,7 +83,6 @@
 "
 
 EXTRA_OECONF_class-native = " \
-    --with-builtin-grub2-mkconfig \
     --enable-wrpseudo-compat \
     --disable-otmpfile \
 "
@@ -106,7 +104,7 @@
     create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
 }
 
-PACKAGES += " \
+PACKAGE_BEFORE_PN = " \
     ${PN}-dracut \
     ${PN}-grub \
     ${PN}-mkinitcpio \
@@ -114,20 +112,11 @@
     ${PN}-trivial-httpd \
 "
 
-FILES_${PN} = " \
-    ${bindir}/ostree \
-    ${bindir}/rofiles-fuse \
-    ${datadir}/${BPN} \
-    ${datadir}/gir-1.0 \
-    ${libdir}/${BPN}/ostree-remount \
-    ${libdir}/girepository-1.0 \
-    ${libdir}/lib*${SOLIBS} \
-    ${libdir}/tmpfiles.d/ostree-tmpfiles.conf \
-    ${sysconfdir}/ostree/remotes.d \
-    ${systemd_unitdir}/system-generators/ostree-system-generator \
-    ${systemd_unitdir}/system/ostree-finalize-staged.path \
-    ${systemd_unitdir}/system/ostree-finalize-staged.service \
-    ${systemd_unitdir}/system/ostree-remount.service \
+FILES_${PN} += " \
+    ${nonarch_libdir}/${BPN} \
+    ${nonarch_libdir}/tmpfiles.d \
+    ${systemd_unitdir}/system \
+    ${systemd_unitdir}/system-generators \
 "
 FILES_${PN}-dracut = " \
     ${sysconfdir}/dracut.conf.d \
@@ -142,7 +131,7 @@
     ${libdir}/initcpio \
 "
 FILES_${PN}-switchroot = " \
-    ${libdir}/ostree/ostree-prepare-root \
+    ${nonarch_libdir}/${BPN}/ostree-prepare-root \
     ${systemd_unitdir}/system/ostree-prepare-root.service \
 "
 FILES_${PN}-trivial-httpd = " \
@@ -168,8 +157,10 @@
     grep \
     python3-core \
     python3-multiprocessing \
-    python3-pyyaml \
+    tar \
     ${PN}-trivial-httpd \
+    ${@bb.utils.contains('BBFILE_COLLECTIONS', 'meta-python', 'python3-pyyaml', '', d)} \
+    ${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
 "
 RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils glibc-localedata-en-us"
 
@@ -180,13 +171,3 @@
 SYSTEMD_SERVICE_${PN}-switchroot = "ostree-prepare-root.service"
 
 BBCLASSEXTEND = "native"
-
-python __anonymous() {
-    if not bb.data.inherits_class('native', d) and bb.utils.contains('PTEST_ENABLED', '1', 'True', 'False', d):
-        if not bb.utils.contains_any('BBFILE_COLLECTIONS', 'meta-python', 'True', 'False', d):
-            raise bb.parse.SkipRecipe('ptest requires meta-python to be present.')
-        elif not bb.utils.contains_any('PACKAGECONFIG', 'soup curl', 'True', 'False', d):
-            raise bb.parse.SkipRecipe('ptest requires soup enabled in PACKAGECONFIG.')
-        elif not oe.utils.any_distro_features(d, "xattr"):
-            raise bb.parse.SkipRecipe('ptest requires xattr enabled in DISTRO_FEATURES.')
-}
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch
new file mode 100644
index 0000000..0a93411
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch
@@ -0,0 +1,25 @@
+From 3e97c9004f4ec58ca3696ee6298f91e6eeb76e04 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 14:46:25 -0800
+Subject: [PATCH] include <stdexcept> for std::invalid_argument
+
+Upstream-Status: Submitted [https://github.com/rmbreak/pam_ldapdb/pull/11]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ pam_ldapdb.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/pam_ldapdb.cpp b/pam_ldapdb.cpp
+index 9baf1e6..be5d85c 100644
+--- a/pam_ldapdb.cpp
++++ b/pam_ldapdb.cpp
+@@ -1,5 +1,6 @@
+ #include <map>
+ #include <string>
++#include <stdexcept>
+ #include <utility>
+ #include <syslog.h>
+ #include <pwd.h>
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
index 6864cc3..626b22f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
@@ -11,7 +11,9 @@
 REQUIRED_DISTRO_FEATURES = "pam"
 
 SRCREV = "84d7b260f1ae6857ae36e014c9a5968e8aa1cbe8"
-SRC_URI = "git://github.com/rmbreak/pam_ldapdb"
+SRC_URI = "git://github.com/rmbreak/pam_ldapdb \
+           file://0001-include-stdexcept-for-std-invalid_argument.patch \
+"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/0005-Mark-extern-definition-of-SDS_NOINIT-in-sds.h.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/0005-Mark-extern-definition-of-SDS_NOINIT-in-sds.h.patch
new file mode 100644
index 0000000..4675687
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/0005-Mark-extern-definition-of-SDS_NOINIT-in-sds.h.patch
@@ -0,0 +1,27 @@
+From 7f7f710c8821b7254baeaf945ca3ca263b9845e2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 21 Dec 2019 11:17:50 -0800
+Subject: [PATCH] Mark extern definition of SDS_NOINIT in sds.h
+
+This helps avoiding multiple definition of this variable, its also
+defined globally in sds.c
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/sds.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sds.h b/src/sds.h
+index 1bdb60d..adcc12c 100644
+--- a/src/sds.h
++++ b/src/sds.h
+@@ -34,7 +34,7 @@
+ #define __SDS_H
+ 
+ #define SDS_MAX_PREALLOC (1024*1024)
+-const char *SDS_NOINIT;
++extern const char *SDS_NOINIT;
+ 
+ #include <sys/types.h>
+ #include <stdarg.h>
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/Fixed-stack-trace-generation-on-aarch64.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/Fixed-stack-trace-generation-on-aarch64.patch
deleted file mode 100644
index 82ca307..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/Fixed-stack-trace-generation-on-aarch64.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From c8ca71d40bc51e255457cd4374dd45ec9ebf8ae1 Mon Sep 17 00:00:00 2001
-From: Jun He <jun.he@arm.com>
-Date: Mon, 3 Jul 2017 07:18:32 +0000
-Subject: [PATCH] Fixed stack trace generation on aarch64
-
-Change-Id: I9801239c98cb7362ed07e8b9ec2ba7e45749dba7
-Signed-off-by: Jun He <jun.he@arm.com>
-
-* fixes also this error when building with -Werror=return-type:
-  debug.c:698:1: error: no return statement in function returning non-void [-Werror=return-type]
-
-Upstream-Status: Backport [https://github.com/antirez/redis/commit/c8ca71d40bc51e255457cd4374dd45ec9ebf8ae1]
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/Makefile | 2 +-
- src/debug.c  | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index 24e960593eb..a1ff4258a9d 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -40,7 +40,7 @@
- endif
- 
- # To get ARM stack traces if Redis crashes we need a special C flag.
--ifneq (,$(findstring armv,$(uname_M)))
-+ifneq (,$(filter aarch64 armv,$(uname_M)))
-         CFLAGS+=-funwind-tables
- endif
- 
-diff --git a/src/debug.c b/src/debug.c
-index a4caa49f285..c976d0ed919 100644
---- a/src/debug.c
-+++ b/src/debug.c
-@@ -691,6 +691,8 @@
-     return (void*) uc->uc_mcontext.sc_ip;
-     #elif defined(__arm__) /* Linux ARM */
-     return (void*) uc->uc_mcontext.arm_pc;
-+    #elif defined(__aarch64__) /* Linux AArch64 */
-+    return (void*) uc->uc_mcontext.pc;
-     #endif
- #else
-     return NULL;
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
new file mode 100644
index 0000000..9a40d83
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
@@ -0,0 +1,19 @@
+Define _GNU_SOURCE to get PTHREAD_MUTEX_INITIALIZER
+
+Fixes
+| zmalloc.c:87:37: error: 'PTHREAD_MUTEX_DEFAULT' undeclared here (not in a function)
+|    87 | pthread_mutex_t used_memory_mutex = PTHREAD_MUTEX_INITIALIZER;
+|       |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/zmalloc.c
++++ b/src/zmalloc.c
+@@ -28,6 +28,7 @@
+  * POSSIBILITY OF SUCH DAMAGE.
+  */
+ 
++#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stdint.h>
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch
deleted file mode 100644
index 23b2f2a..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From c486455e0691f9915018b9d8b133200a6c61a3c5 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Thu, 24 May 2018 09:58:42 -0700
-Subject: [PATCH] Remove atomics
-
-Based on this patch:
-https://github.com/patrikx3/lede-redis/blob/master/redis/patches/010-redis.patch
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
----
- deps/jemalloc/src/pages.c | 22 +---------------------
- src/atomicvar.h           |  4 ++--
- 2 files changed, 3 insertions(+), 23 deletions(-)
-
-diff --git a/deps/jemalloc/src/pages.c b/deps/jemalloc/src/pages.c
-index 83a167f6..8e82c78d 100644
---- a/deps/jemalloc/src/pages.c
-+++ b/deps/jemalloc/src/pages.c
-@@ -147,27 +147,7 @@ pages_purge(void *addr, size_t size)
- {
- 	bool unzeroed;
- 
--#ifdef _WIN32
--	VirtualAlloc(addr, size, MEM_RESET, PAGE_READWRITE);
--	unzeroed = true;
--#elif defined(JEMALLOC_HAVE_MADVISE)
--#  ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
--#    define JEMALLOC_MADV_PURGE MADV_DONTNEED
--#    define JEMALLOC_MADV_ZEROS true
--#  elif defined(JEMALLOC_PURGE_MADVISE_FREE)
--#    define JEMALLOC_MADV_PURGE MADV_FREE
--#    define JEMALLOC_MADV_ZEROS false
--#  else
--#    error "No madvise(2) flag defined for purging unused dirty pages."
--#  endif
--	int err = madvise(addr, size, JEMALLOC_MADV_PURGE);
--	unzeroed = (!JEMALLOC_MADV_ZEROS || err != 0);
--#  undef JEMALLOC_MADV_PURGE
--#  undef JEMALLOC_MADV_ZEROS
--#else
--	/* Last resort no-op. */
--	unzeroed = true;
--#endif
-+	unzeroed = false;
- 	return (unzeroed);
- }
- 
-diff --git a/src/atomicvar.h b/src/atomicvar.h
-index 84a5bbc5..f9b563c2 100644
---- a/src/atomicvar.h
-+++ b/src/atomicvar.h
-@@ -68,7 +68,7 @@
-  * is reported. */
- // #define __ATOMIC_VAR_FORCE_SYNC_MACROS
- 
--#if !defined(__ATOMIC_VAR_FORCE_SYNC_MACROS) && defined(__ATOMIC_RELAXED) && !defined(__sun) && (!defined(__clang__) || !defined(__APPLE__) || __apple_build_version__ > 4210057)
-+#if defined(CONFIG_EDAC_ATOMIC_SCRUB) &&  !defined(__ATOMIC_VAR_FORCE_SYNC_MACROS) && defined(__ATOMIC_RELAXED) && !defined(__sun) && (!defined(__clang__) || !defined(__APPLE__) || __apple_build_version__ > 4210057)
- /* Implementation using __atomic macros. */
- 
- #define atomicIncr(var,count) __atomic_add_fetch(&var,(count),__ATOMIC_RELAXED)
-@@ -82,7 +82,7 @@
- #define atomicSet(var,value) __atomic_store_n(&var,value,__ATOMIC_RELAXED)
- #define REDIS_ATOMIC_API "atomic-builtin"
- 
--#elif defined(HAVE_ATOMIC)
-+#elif defined(CONFIG_EDAC_ATOMIC_SCRUB) && defined(HAVE_ATOMIC)
- /* Implementation using __sync macros. */
- 
- #define atomicIncr(var,count) __sync_add_and_fetch(&var,(count))
--- 
-2.17.0
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.14.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_5.0.7.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.14.bb
rename to meta-openembedded/meta-oe/recipes-extended/redis/redis_5.0.7.bb
index 7dc6f97..b915755 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.14.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_5.0.7.bb
@@ -7,26 +7,27 @@
 DEPENDS = "readline lua ncurses"
 
 SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
-           file://hiredis-use-default-CC-if-it-is-set.patch \
-           file://lua-update-Makefile-to-use-environment-build-setting.patch \
-           file://oe-use-libc-malloc.patch \
-           file://Fixed-stack-trace-generation-on-aarch64.patch \
-           file://0001-src-Do-not-reset-FINAL_LIBS.patch \
            file://redis.conf \
            file://init-redis-server \
            file://redis.service \
-"
+           file://hiredis-use-default-CC-if-it-is-set.patch \
+           file://lua-update-Makefile-to-use-environment-build-setting.patch \
+           file://oe-use-libc-malloc.patch \
+           file://0001-src-Do-not-reset-FINAL_LIBS.patch \
+           file://0005-Mark-extern-definition-of-SDS_NOINIT-in-sds.h.patch \
+           file://GNU_SOURCE.patch \
+           "
 
-SRC_URI_append_mips = " file://remove-atomics.patch"
-SRC_URI_append_arm = " file://remove-atomics.patch"
-SRC_URI_append_powerpc = " file://remove-atomics.patch"
-
-SRC_URI[md5sum] = "96ae20ffd68b9daee24b702b754d89f3"
-SRC_URI[sha256sum] = "1e1e18420a86cfb285933123b04a82e1ebda20bfb0a289472745a087587e93a7"
+SRC_URI[md5sum] = "612ec43075a888bc8b8a7dd8ccb2e0f7"
+SRC_URI[sha256sum] = "61db74eabf6801f057fd24b590232f2f337d422280fd19486eca03be87d3a82b"
 
 inherit autotools-brokensep update-rc.d systemd useradd
 
 FINAL_LIBS_x86_toolchain-clang = "-latomic"
+FINAL_LIBS_mips = "-latomic"
+FINAL_LIBS_arm = "-latomic"
+FINAL_LIBS_powerpc = "-latomic"
+
 export FINAL_LIBS
 
 USERADD_PACKAGES = "${PN}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1910.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1911.0.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1910.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1911.0.bb
index 8287d2b..02ac03e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1910.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1911.0.bb
@@ -29,8 +29,8 @@
     file://0001-Include-sys-time-h.patch \
 "
 
-SRC_URI[md5sum] = "6d4d94359d083f449f089b8dbb93c423"
-SRC_URI[sha256sum] = "0219ee692f31a39743acb62aaf4196b644ce94edf386df4605fd6a11a4fe0c93"
+SRC_URI[md5sum] = "154e33feb587216f2955050a8301104c"
+SRC_URI[sha256sum] = "e1f4776b1c62ad7220f4d624a89a96b0c3d4738006899356eaaef0f1f91ee104"
 
 UPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
@@ -40,6 +40,7 @@
 EXTRA_OECONF += "--disable-generate-man-pages ap_cv_atomic_builtins=yes"
 EXTRA_OECONF += "--enable-imfile-tests"
 EXTRA_OECONF_remove_mipsarch = "ap_cv_atomic_builtins=yes"
+EXTRA_OECONF_remove_powerpc = "ap_cv_atomic_builtins=yes"
 
 # first line is default yes in configure
 PACKAGECONFIG ??= " \
@@ -162,12 +163,26 @@
 
 # for rsyslog-ptest
 VALGRIND = "valgrind"
-VALGRIND_mips = ""
-VALGRIND_mips64 = ""
-VALGRIND_mips64n32 = ""
-VALGRIND_arm = ""
-VALGRIND_aarch64 = ""
+
+# valgrind supports armv7 and above
+VALGRIND_armv4 = ''
+VALGRIND_armv5 = ''
+VALGRIND_armv6 = ''
+
+# X32 isn't supported by valgrind at this time
+VALGRIND_linux-gnux32 = ''
+VALGRIND_linux-muslx32 = ''
+
+# Disable for some MIPS variants
+VALGRIND_mipsarchr6 = ''
+VALGRIND_linux-gnun32 = ''
+
+# Disable for powerpc64 with musl
+VALGRIND_libc-musl_powerpc64 = ''
+
+# RISC-V support for valgrind is not there yet
 VALGRIND_riscv64 = ""
+
 RDEPENDS_${PN}-ptest += "\
   make diffutils gzip bash gawk coreutils procps \
   libgcc python-core python-io \
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb
index bf7eaf4..ffd46da 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb
@@ -9,13 +9,16 @@
 SECTION = "utils"
 
 LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://README.license;md5=60487bf0bf429d6b5aa72b6d37a0eb22"
+LIC_FILES_CHKSUM = "file://../README.license;md5=60487bf0bf429d6b5aa72b6d37a0eb22"
+
+PV .= "+git${SRCPV}"
 
 SRC_URI = "git://pagure.io/sanlock.git;protocol=http \
-           file://0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch \
+           file://0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch;patchdir=../ \
           "
-SRCREV = "7afe0e66f5c7f24894896fad20ffa6f39733d80f"
-S = "${WORKDIR}/git"
+SRCREV = "cff348800722f7dadf030ffe7494c2df714996e3"
+
+S = "${WORKDIR}/git/python"
 
 DEPENDS = "libaio util-linux"
 
@@ -24,15 +27,13 @@
 do_configure[noexec] = "1"
 
 do_compile_prepend () {
-    oe_runmake -C wdmd CMD_LDFLAGS="${LDFLAGS}" LIB_LDFLAGS="${LDFLAGS}"
-    oe_runmake -C src CMD_LDFLAGS="${LDFLAGS}" LIB_ENTIRE_LDFLAGS="${LDFLAGS}" LIB_CLIENT_LDFLAGS="${LDFLAGS}"
-    cd ${S}/python
+    oe_runmake -C ${S}/../wdmd CMD_LDFLAGS="${LDFLAGS}" LIB_LDFLAGS="${LDFLAGS}"
+    oe_runmake -C ${S}/../src CMD_LDFLAGS="${LDFLAGS}" LIB_ENTIRE_LDFLAGS="${LDFLAGS}" LIB_CLIENT_LDFLAGS="${LDFLAGS}"
 }
 
 do_install_prepend () {
-    oe_runmake -C wdmd DESTDIR=${D} LIBDIR=${libdir} install
-    oe_runmake -C src DESTDIR=${D} LIBDIR=${libdir} install
-    cd ${S}/python
+    oe_runmake -C ${S}/../wdmd DESTDIR=${D} LIBDIR=${libdir} install
+    oe_runmake -C ${S}/../src DESTDIR=${D} LIBDIR=${libdir} install
 }
 
 SANLOCKGROUP ?= "sanlock"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.1.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
similarity index 74%
rename from meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.1.bb
rename to meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
index 8152ca7..35e59d6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
@@ -10,6 +10,8 @@
 PACKAGECONFIG[ftdi] = "--with-libftdi,--without-libftdi,libftdi"
 PACKAGECONFIG[usb] = "--with-libusb,--without-libusb,libusb"
 PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx,glibmm doxygen-native"
+PACKAGECONFIG[bluez5] = "--with-libbluez,--without-libbluez,bluez5"
+PACKAGECONFIG[hidapi] = "--with-libhidapi,--without-libhidapi,hidapi"
 
 PACKAGECONFIG ??= "serialport ftdi usb"
 
@@ -17,7 +19,7 @@
 
 SRC_URI = "http://sigrok.org/download/source/libsigrok/libsigrok-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "a3de9e52a660e51d27a6aca025d204a7"
-SRC_URI[sha256sum] = "e40fde7af98d29e922e9d3cbe0a6c0569889153fc31e47b8b1afe4d846292b9c"
+SRC_URI[md5sum] = "e258d471b6d5eaa58daf927a0dc3ba67"
+SRC_URI[sha256sum] = "4d341f90b6220d3e8cb251dacf726c41165285612248f2c52d15df4590a1ce3c"
 
 FILES_${PN} += "${datadir}/*"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.2.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
similarity index 74%
rename from meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
index b8e1e47..f9c1d1a 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
@@ -10,5 +10,5 @@
 
 SRC_URI = "http://sigrok.org/download/source/libsigrokdecode/libsigrokdecode-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "b9033bc7e68bc17fffffd4fdd793f5a1"
-SRC_URI[sha256sum] = "e08d9e797c54eccf3144da631b6e5f1498ac531e51520428df537a1da82583f0"
+SRC_URI[md5sum] = "7ba4ed4ef1f06ae96979751e096c2821"
+SRC_URI[sha256sum] = "c50814aa6743cd8c4e88c84a0cdd8889d883c3be122289be90c63d7d67883fc0"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb
index d31bcd2..2293f14 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb
@@ -13,6 +13,7 @@
 inherit autotools pkgconfig
 
 SRC_URI = "http://sigrok.org/download/source/sigrok-cli/sigrok-cli-${PV}.tar.gz"
+SRC_URI[md5sum] = "3f45ce664bad529d8b3f78a61b017d75"
+SRC_URI[sha256sum] = "f52413429f47d457c333db0fd068416ab7a3f9e35ca76de8624dc5ac6fb07797"
 
-SRC_URI[md5sum] = "77cb745e2fa239c7bd1ea81e2d67ede9"
-SRC_URI[sha256sum] = "5669d968c2de3dfc6adfda76e83789b6ba76368407c832438cef5e7099a65e1c"
+FILES_${PN} += "${datadir}/icons/hicolor"
diff --git a/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.0.bb b/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.1.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.1.bb
index d984566..b401272 100644
--- a/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.1.bb
@@ -22,8 +22,8 @@
 PACKAGECONFIG[libcap-ng] = "--with-libcap-ng=yes,--with-libcap-ng=no,libcap-ng"
 PACKAGECONFIG[selinux] = "--with-selinux=yes,--with-selinux=no,libselinux"
 
-SRC_URI[md5sum] = "b2a80e4789af23d67dfe1e88a997abbf"
-SRC_URI[sha256sum] = "e5e1ac2786bc87fdbd6f92d0ee751b799fbb3e1a09c0a6a379f9eb64b3e8f61c"
+SRC_URI[md5sum] = "430cd5f64caa4524018b536e5ecd9c29"
+SRC_URI[sha256sum] = "3f734d2c99deb1e4af62b25d944c6252de70ca64d766c4c7294545a2e659b846"
 
 inherit autotools update-rc.d systemd
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch
new file mode 100644
index 0000000..68b73bc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch
@@ -0,0 +1,33 @@
+From d41e2bef1c39dcbc4896b1dd7ab168da530672b5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 30 Dec 2019 13:33:39 -0800
+Subject: [PATCH] cmake: Disable -Wno-misleading-indentation with clang-10 onwards
+
+clang also introduced this warning now
+
+Upstream-Status: Submitted [https://github.com/eclipse/upm/pull/693]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 069e4902..47c7f4c3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -99,6 +99,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_
+   list (APPEND C_CXX_WARNING_FLAGS -Wno-misleading-indentation)
+ endif ()
+ 
++# clang-10 added  -Wmisleading-indentation as well, skipp it too
++if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "9")
++  list (APPEND C_CXX_WARNING_FLAGS -Wno-misleading-indentation)
++endif ()
++
+ # Warnings as errors?
+ if (WERROR)
+   list (APPEND C_CXX_WARNING_FLAGS -Werror)
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch
new file mode 100644
index 0000000..f9fae16
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch
@@ -0,0 +1,57 @@
+From cce8be3966b602cf7e20d559e50fcf493b9b42cc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 18:13:21 -0800
+Subject: [PATCH] initialize local variables before use
+
+fixes
+error: 'ctrl_reg2_data' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+
+Upstream-Status: Submitted [https://github.com/eclipse/upm/pull/693]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/kxtj3/kxtj3.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/kxtj3/kxtj3.c b/src/kxtj3/kxtj3.c
+index a6f3c4f8..050ae585 100755
+--- a/src/kxtj3/kxtj3.c
++++ b/src/kxtj3/kxtj3.c
+@@ -715,7 +715,7 @@ upm_result_t kxtj3_sensor_software_reset(const kxtj3_context dev)
+     if (kxtj3_set_bit_on(dev, KXTJ3_CTRL_REG2, KXTJ3_CTRL_REG2_SRST) != UPM_SUCCESS)
+         return UPM_ERROR_OPERATION_FAILED;
+ 
+-    uint8_t ctrl_reg2_data;
++    uint8_t ctrl_reg2_data = 0;
+     kxtj3_read_register(dev, KXTJ3_CTRL_REG2, &ctrl_reg2_data);
+ 
+     uint8_t srst_counter = 0;
+@@ -824,7 +824,7 @@ upm_result_t kxtj3_enable_interrupt_pin(const kxtj3_context dev, KXTJ3_INTERRUPT
+                                         KXTJ3_INTERRUPT_RESPONSE_T response_type)
+ {
+     assert(dev != NULL);
+-    uint8_t int_reg_value;
++    uint8_t int_reg_value = 0;
+     kxtj3_read_register(dev, KXTJ3_INT_CTRL_REG1, &int_reg_value);
+ 
+     if (polarity)
+@@ -865,7 +865,7 @@ upm_result_t kxtj3_set_interrupt_response(const kxtj3_context dev, KXTJ3_INTERRU
+ bool kxtj3_get_interrupt_status(const kxtj3_context dev)
+ {
+     assert(dev != NULL);
+-    uint8_t status_reg_value;
++    uint8_t status_reg_value = 0;
+     kxtj3_read_register(dev, KXTJ3_STATUS_REG, &status_reg_value);
+     if (!(status_reg_value & KXTJ3_STATUS_REG_INT))
+         return false;
+@@ -955,7 +955,7 @@ kxtj3_wakeup_axes kxtj3_get_wakeup_axis_and_direction(kxtj3_context dev)
+ {
+     assert(dev != NULL);
+ 
+-    uint8_t int_source2_value;
++    uint8_t int_source2_value = 0;
+     kxtj3_read_register(dev, KXTJ3_INT_SOURCE2, &int_source2_value);
+ 
+     kxtj3_wakeup_axes wakeup_axis;
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb b/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
index dbe9737..6db8f88 100644
--- a/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
@@ -13,6 +13,8 @@
 SRC_URI = "git://github.com/intel-iot-devkit/${BPN}.git;protocol=http \
            file://0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch \
            file://0001-Use-stdint-types.patch \
+           file://0001-initialize-local-variables-before-use.patch \
+           file://0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch \
            "
 
 SRC_URI_append_toolchain-clang_x86 = " file://0001-nmea_gps-Link-with-latomic.patch "
diff --git a/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb b/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
index 3103748..e036f71 100644
--- a/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
@@ -28,9 +28,10 @@
 "
 
 PACKAGECONFIG ??= "python3"
-PACKAGECONFIG[python] = "--with-python,--without-python,python,python"
 PACKAGECONFIG[python3] = "--with-python3,--without-python3,python3,python3"
 
+EXTRA_OECONF = "--without-python"
+
 RDEPENDS_python3-${BPN} += "${PN}"
 
 PACKAGES += "python3-${BPN}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.4.bb b/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.4.bb
new file mode 100644
index 0000000..eb201f4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.4.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Zstandard - Fast real-time compression algorithm"
+DESCRIPTION = "Zstandard is a fast lossless compression algorithm, targeting \
+real-time compression scenarios at zlib-level and better compression ratios. \
+It's backed by a very fast entropy stage, provided by Huff0 and FSE library."
+HOMEPAGE = "http://www.zstd.net/"
+SECTION = "console/utils"
+
+LICENSE = "BSD-3-Clause & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c7f0b161edbe52f5f345a3d1311d0b32 \
+                    file://COPYING;md5=39bba7d2cf0ba1036f2a6e2be52fe3f0"
+
+SRC_URI = "git://github.com/facebook/zstd.git;nobranch=1"
+
+SRCREV = "10f0e6993f9d2f682da6d04aa2385b7d53cbb4ee"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lz4] = "HAVE_LZ4=1,HAVE_LZ4=0,lz4"
+PACKAGECONFIG[lzma] = "HAVE_LZMA=1,HAVE_LZMA=0,xz"
+PACKAGECONFIG[zlib] = "HAVE_ZLIB=1,HAVE_ZLIB=0,zlib"
+
+# See programs/README.md for how to use this
+ZSTD_LEGACY_SUPPORT ??= "4"
+
+do_compile () {
+    oe_runmake ${PACKAGECONFIG_CONFARGS} ZSTD_LEGACY_SUPPORT=${ZSTD_LEGACY_SUPPORT}
+}
+
+do_install () {
+    oe_runmake install 'DESTDIR=${D}'
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
index 96aa311..65fd89e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
@@ -21,7 +21,8 @@
            file://use-PTHREAD_MUTEX_RECURSIVE.patch \
            file://fix-client-gfx_state-initialisation.patch \
            file://fix-tslib-version-check.patch \
-          "
+           file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+           "
 
 S = "${WORKDIR}/DirectFB-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..2f76646
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,139 @@
+From 0b66557f2e924023b12006b58d8e86149c745aed Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 20:34:33 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ inputdrivers/linux_input/linux_input.c | 36 ++++++++++++++++++--------
+ 1 file changed, 25 insertions(+), 11 deletions(-)
+
+diff --git a/inputdrivers/linux_input/linux_input.c b/inputdrivers/linux_input/linux_input.c
+index 7e9a6ad..03deebc 100644
+--- a/inputdrivers/linux_input/linux_input.c
++++ b/inputdrivers/linux_input/linux_input.c
+@@ -42,6 +42,11 @@ typedef unsigned long kernel_ulong_t;
+ 
+ #include <linux/input.h>
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #ifndef KEY_OK
+ /* Linux kernel 2.5.42+ defines additional keys in linux/input.h */
+ #include "input_fake.h"
+@@ -754,7 +759,8 @@ translate_event( const LinuxInputData     *data,
+                  DFBInputEvent            *devt )
+ {
+      devt->flags     = DIEF_TIMESTAMP;
+-     devt->timestamp = levt->time;
++     devt->timestamp.tv_sec = levt->input_event_sec;
++     devt->timestamp.tv_usec = levt->input_event_usec;
+ 
+      switch (levt->type) {
+           case EV_KEY:
+@@ -2139,7 +2145,8 @@ touchpad_translate( struct touchpad_fsm_state *state,
+      int abs, rel;
+ 
+      devt->flags     = DIEF_TIMESTAMP | (dfb_config->linux_input_touch_abs ? DIEF_AXISABS : DIEF_AXISREL);
+-     devt->timestamp = levt->time;
++     devt->timestamp.tv_sec = levt->input_event_sec;
++     devt->timestamp.tv_usec = levt->input_event_usec;
+      devt->type      = DIET_AXISMOTION;
+ 
+      switch (levt->code) {
+@@ -2204,7 +2211,7 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+               DFBInputEvent             *devt )
+ {
+      struct timeval timeout = { 0, 125000 };
+-
++     struct timeval tval;
+      /* select() timeout? */
+      if (!levt) {
+           /* Check if button release is due. */
+@@ -2223,6 +2230,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+           return 0;
+      }
+ 
++     tval.tv_sec = levt->input_event_sec;
++     tval.tv_usec = levt->input_event_usec;
+      /* More or less ignore these events for now */
+      if ((levt->type == EV_SYN && levt->code == SYN_REPORT) ||
+          (levt->type == EV_ABS && levt->code == ABS_PRESSURE) ||
+@@ -2233,7 +2242,7 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ 
+           /* Check if button release is due. */
+           if (state->fsm_state == TOUCHPAD_FSM_DRAG_START &&
+-              timeout_passed( &state->timeout, &levt->time )) {
++              timeout_passed( &state->timeout, &tval )) {
+                devt->flags     = DIEF_TIMESTAMP;
+                devt->timestamp = state->timeout; /* timeout of levt->time? */
+                devt->type      = DIET_BUTTONRELEASE;
+@@ -2255,7 +2264,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+      case TOUCHPAD_FSM_START:
+           if (touchpad_finger_landing( levt )) {
+                state->fsm_state = TOUCHPAD_FSM_MAIN;
+-               state->timeout = levt->time;
++               state->timeout.tv_sec = levt->input_event_sec;
++               state->timeout.tv_usec = levt->input_event_usec;
+                timeout_add( &state->timeout, &timeout );
+           }
+           return 0;
+@@ -2268,15 +2278,17 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+                }
+           }
+           else if (touchpad_finger_leaving( levt )) {
+-               if (!timeout_passed( &state->timeout, &levt->time )) {
++               if (!timeout_passed( &state->timeout, &tval )) {
+                     devt->flags     = DIEF_TIMESTAMP;
+-                    devt->timestamp = levt->time;
++                    devt->timestamp.tv_sec = levt->input_event_sec;
++                    devt->timestamp.tv_usec = levt->input_event_usec;
+                     devt->type      = DIET_BUTTONPRESS;
+                     devt->button    = DIBI_FIRST;
+ 
+                     touchpad_fsm_init( state );
+                     state->fsm_state = TOUCHPAD_FSM_DRAG_START;
+-                    state->timeout = levt->time;
++                    state->timeout.tv_sec = levt->input_event_sec;
++                    state->timeout.tv_usec = levt->input_event_usec;
+                     timeout_add( &state->timeout, &timeout );
+                     return 1;
+                }
+@@ -2287,7 +2299,7 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+           return 0;
+ 
+      case TOUCHPAD_FSM_DRAG_START:
+-          if (timeout_passed( &state->timeout, &levt->time )){
++          if (timeout_passed( &state->timeout, &tval )){
+                devt->flags     = DIEF_TIMESTAMP;
+                devt->timestamp = state->timeout; /* timeout of levt->time? */
+                devt->type      = DIET_BUTTONRELEASE;
+@@ -2299,7 +2311,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+           else {
+                if (touchpad_finger_landing( levt )) {
+                     state->fsm_state = TOUCHPAD_FSM_DRAG_MAIN;
+-                    state->timeout = levt->time;
++                    state->timeout.tv_sec = levt->input_event_sec;
++                    state->timeout.tv_usec = levt->input_event_usec;
+                     timeout_add( &state->timeout, &timeout );
+                }
+           }
+@@ -2314,7 +2327,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+           }
+           else if (touchpad_finger_leaving( levt )) {
+                devt->flags     = DIEF_TIMESTAMP;
+-               devt->timestamp = levt->time;
++               devt->timestamp.tv_sec = levt->input_event_sec;
++               devt->timestamp.tv_usec = levt->input_event_usec;
+                devt->type      = DIET_BUTTONRELEASE;
+                devt->button    = DIBI_FIRST;
+ 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch b/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch
index e81d395..50003e3 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch
+++ b/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch
@@ -10,10 +10,6 @@
 most definitely is not.  It is accomplished by trying to execute
 a program, which does not work when cross compiling.
 
-The fvwm(1) man page is created from Docbook XML which is set for
-a Windows code page that is not available when compiling.  Easiest is
-to just not create the man page as those are not needed on the monitor.
-
 Upstream-Status: inappropriate [OE specific]
 Signed-off-by: Jarmo Jaakkola <jarmo.jaakkola@vincit.fi>
 Signed-off-by: Riku Hämäläinen <riku.hamalainen@ge.com>
@@ -36,19 +32,6 @@
  AH_VERBATIM([_COMPAT_OLD_KEYSYMDEF],
  [#ifdef COMPAT_OLD_KEYSYMDEF
  #  define XK_Page_Up   XK_Prior
-diff --git a/doc/fvwm/Makefile.am b/doc/fvwm/Makefile.am
-index cddb102..ff00149 100755
---- a/doc/fvwm/Makefile.am
-+++ b/doc/fvwm/Makefile.am
-@@ -10,7 +10,7 @@ XSL_PROFILE = $(srcdir)/../docbook-xsl/profiling/profile.xsl
- HTML_FILES = fvwm.man.html
- XML_FILES = @DOC_SECTIONS_XML_PATH@
- EXTRA_DIST = @DOC_SECTIONS_XML@ $(man_MANS) sections
--man_MANS = fvwm.1
-+man_MANS =
- 
- if FVWM_BUILD_HTMLDOC
- doc_DATA = $(HTML_FILES)
 -- 
 1.9.1
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.8.bb b/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.8.bb
rename to meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
index b3cb01a..d1ba482 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.8.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
@@ -31,14 +31,12 @@
     zlib \
 "
 
-PV = "2.6.8"
-
 SRC_URI = " \
     git://github.com/fvwmorg/fvwm.git;protocol=https \
     file://0001-Fix-compilation-for-disabled-gnome.patch \
 "
 
-SRCREV = "dc6a396bfe5cd6c53eb1df103c3af505d0899f90"
+SRCREV = "88eab6dc16da6e5dd25fe97fbb56b96ef0d58657"
 
 S = "${WORKDIR}/git"
 
@@ -55,7 +53,6 @@
     --disable-fontconfigtest \
     --disable-htmldoc \
     --disable-imlibtest \
-    --disable-mandoc \
     --disable-nls \
     --disable-perllib \
     --disable-rsvg \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch
new file mode 100644
index 0000000..2eb50a5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch
@@ -0,0 +1,158 @@
+From 461861cd2e34294830b121db834c05ff39424f6f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 27 Dec 2019 18:42:51 -0800
+Subject: [PATCH] Fix Wimplicit-int-float-conversion warnings with clang 10+
+
+This is a new warning in clang which will be available in clang 10
+onwards
+
+Fixes
+error: implicit conversion from 'const int' to 'float' may lose precision [-Werror,-Wimplicit-int-float-conversion]
+
+Upstream-Status: Submitted [https://github.com/g-truc/glm/pull/986]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ glm/gtx/scalar_multiplication.hpp  |  2 +-
+ test/gtx/gtx_fast_trigonometry.cpp | 32 +++++++++++++++---------------
+ 2 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/glm/gtx/scalar_multiplication.hpp b/glm/gtx/scalar_multiplication.hpp
+index f391f8de..496ba193 100644
+--- a/glm/gtx/scalar_multiplication.hpp
++++ b/glm/gtx/scalar_multiplication.hpp
+@@ -54,7 +54,7 @@ namespace glm
+ 	template<typename T> \
+ 	return_type_scalar_multiplication<T, Vec> \
+ 	operator/(Vec lh, T const& s){ \
+-		return lh *= 1.0f / s; \
++		return lh *= 1.0f / static_cast<float>(s); \
+ 	}
+ 
+ GLM_IMPLEMENT_SCAL_MULT(vec2)
+diff --git a/test/gtx/gtx_fast_trigonometry.cpp b/test/gtx/gtx_fast_trigonometry.cpp
+index f3bf17bf..f3c4e957 100644
+--- a/test/gtx/gtx_fast_trigonometry.cpp
++++ b/test/gtx/gtx_fast_trigonometry.cpp
+@@ -239,12 +239,12 @@ namespace taylorCos
+ 		std::vector<glm::vec4> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = fastCosNew(AngleShift + glm::vec4(Begin + Steps * i));
++			Results[i] = fastCosNew(AngleShift + glm::vec4(Begin + Steps * float(i)));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -280,12 +280,12 @@ namespace taylorCos
+ 		std::vector<glm::vec4> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = taylorCos::fastCosDeterminisctic(AngleShift + glm::vec4(Begin + Steps * i));
++			Results[i] = taylorCos::fastCosDeterminisctic(AngleShift + glm::vec4(Begin + Steps * float(i)));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -327,12 +327,12 @@ namespace taylorCos
+ 		std::vector<glm::vec4> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = taylorCos::fastRefCos(AngleShift + glm::vec4(Begin + Steps * i));
++			Results[i] = taylorCos::fastRefCos(AngleShift + glm::vec4(Begin + Steps * float(i)));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -349,12 +349,12 @@ namespace taylorCos
+ 		std::vector<glm::vec4> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = glm::fastCos(AngleShift + glm::vec4(Begin + Steps * i));
++			Results[i] = glm::fastCos(AngleShift + glm::vec4(Begin + Steps * float(i)));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -371,12 +371,12 @@ namespace taylorCos
+ 		std::vector<glm::vec4> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = glm::cos(AngleShift + glm::vec4(Begin + Steps * i));
++			Results[i] = glm::cos(AngleShift + glm::vec4(Begin + Steps * float(i)));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -466,12 +466,12 @@ namespace taylor2
+ 		std::vector<float> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = taylorCosA(AngleShift.x + Begin + Steps * i);
++			Results[i] = taylorCosA(AngleShift.x + Begin + Steps * float(i));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -488,12 +488,12 @@ namespace taylor2
+ 		std::vector<float> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = taylorCosB(AngleShift.x + Begin + Steps * i);
++			Results[i] = taylorCosB(AngleShift.x + Begin + Steps * float(i));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+@@ -510,12 +510,12 @@ namespace taylor2
+ 		std::vector<float> Results;
+ 		Results.resize(Samples);
+ 
+-		float Steps = (End - Begin) / Samples;
++		float Steps = (End - Begin) / float(Samples);
+ 
+ 		std::clock_t const TimeStampBegin = std::clock();
+ 
+ 		for(std::size_t i = 0; i < Samples; ++i)
+-			Results[i] = taylorCosC(AngleShift.x + Begin + Steps * i);
++			Results[i] = taylorCosC(AngleShift.x + Begin + Steps * float(i));
+ 
+ 		std::clock_t const TimeStampEnd = std::clock();
+ 
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in
new file mode 100644
index 0000000..54052e2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in
@@ -0,0 +1,7 @@
+prefix=/usr
+includedir=${prefix}/include
+
+Name: GLM
+Description: OpenGL Mathematics
+Version: @VERSION@
+Cflags: -I${includedir}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in
new file mode 100644
index 0000000..8ab23a1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in
@@ -0,0 +1,20 @@
+set(GLM_VERSION "@VERSION@")
+
+
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+
+macro(set_and_check _var _file)
+  set(${_var} "${_file}")
+  if(NOT EXISTS "${_file}")
+    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
+  endif()
+endmacro()
+
+####################################################################################
+
+set_and_check(GLM_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include")
+
+if (NOT CMAKE_VERSION VERSION_LESS "3.0")
+    include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
+endif()
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in
new file mode 100644
index 0000000..561a0db
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in
@@ -0,0 +1,31 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+set(PACKAGE_VERSION "@VERSION@")
+
+if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+  set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+    set(PACKAGE_VERSION_EXACT TRUE)
+  endif()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
+   return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
+   math(EXPR installedBits "8 * 8")
+   set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+   set(PACKAGE_VERSION_UNSUITABLE FALSE)
+endif()
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake
new file mode 100644
index 0000000..905b677
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake
@@ -0,0 +1,107 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+   message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget glm)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(NOT TARGET ${_expectedTarget})
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  set(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+# Use original install prefix when loaded through a
+# cross-prefix symbolic link such as /lib -> /usr/lib.
+get_filename_component(_realCurr "${_IMPORT_PREFIX}" REALPATH)
+get_filename_component(_realOrig "/usr/lib/cmake/glm" REALPATH)
+if(_realCurr STREQUAL _realOrig)
+  set(_IMPORT_PREFIX "/usr/lib/cmake/glm")
+endif()
+unset(_realOrig)
+unset(_realCurr)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target glm
+add_library(glm INTERFACE IMPORTED)
+
+set_target_properties(glm PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+)
+
+if(CMAKE_VERSION VERSION_LESS 3.0.0)
+  message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/glmTargets-*.cmake")
+foreach(f ${CONFIG_FILES})
+  include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+    if(NOT EXISTS "${file}" )
+      message(FATAL_ERROR "The imported target \"${target}\" references the file
+   \"${file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.5.bb b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.5.bb
deleted file mode 100644
index f367e4e..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.5.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "OpenGL Mathematics Library"
-DESCRIPTION = "OpenGL Mathematics (GLM) is a header only C++ \
-mathematics library for graphics software based on the OpenGL \
-Shading Language (GLSL) specifications."
-HOMEPAGE = "https://glm.g-truc.net"
-BUGTRACKER = "https://github.com/g-truc/glm/issues"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://readme.md;beginline=21;endline=22;md5=3075b5727d36f29edccf97b93e72b790"
-
-SRC_URI = " \
-    git://github.com/g-truc/glm;branch=master \
-"
-# v0.9.9.5
-SRCREV = "d162eee1e6f7c317a09229fe6ceab8ec6ab9a4b4"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-RDEPENDS_${PN}-dev = ""
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb
new file mode 100644
index 0000000..e2f4dbe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb
@@ -0,0 +1,39 @@
+SUMMARY = "OpenGL Mathematics Library"
+DESCRIPTION = "OpenGL Mathematics (GLM) is a header only C++ \
+mathematics library for graphics software based on the OpenGL \
+Shading Language (GLSL) specifications."
+HOMEPAGE = "https://glm.g-truc.net"
+BUGTRACKER = "https://github.com/g-truc/glm/issues"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://copying.txt;md5=4a735e33f271f57404fda17e80085411"
+
+SRC_URI = " \
+    git://github.com/g-truc/glm;branch=master \
+    file://0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch \
+    file://glmConfig.cmake.in \
+    file://glmConfigVersion.cmake.in \
+    file://glm.pc.in \
+    file://glmTargets.cmake \
+"
+SRCREV = "4db8f89aace8f04c839b606e15b39fb8383ec732"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+do_install() {
+    install -d ${D}${includedir} ${D}${docdir}/glm ${D}${libdir}/pkgconfig ${D}${libdir}/cmake/glm
+    cp -R --no-dereference --preserve=mode,links ${S}/glm ${D}${includedir}
+    cp -R --no-dereference --preserve=mode,links ${S}/doc ${D}${docdir}/glm
+    rm ${D}${includedir}/glm/CMakeLists.txt
+    sed "s/@VERSION@/${PV}/" ${WORKDIR}/glmConfigVersion.cmake.in > ${D}${libdir}/cmake/glm/glmConfigVersion.cmake
+    sed "s/@VERSION@/${PV}/" ${WORKDIR}/glmConfig.cmake.in > ${D}${libdir}/cmake/glm/glmConfig.cmake
+    sed "s/@VERSION@/${PV}/" ${WORKDIR}/glm.pc.in > ${D}${libdir}/pkgconfig/glm.pc
+    install -Dm644 ${WORKDIR}/glmTargets.cmake ${D}${libdir}/cmake/glm/glmTargets.cmake
+
+}
+
+RDEPENDS_${PN}-dev = ""
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.14.bb b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.23.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.14.bb
rename to meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.23.bb
index 75ad7f4..ef3100f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.14.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.23.bb
@@ -11,8 +11,8 @@
            file://0002-Look-for-popt-with-GP_CHECK_LIBRARY-function.patch \
 "
 
-SRC_URI[gphoto2.md5sum] = "6c6a21b5e879330cdd71ef92dce36399"
-SRC_URI[gphoto2.sha256sum] = "9302d02fb472d4936988382b7277ccdc4edaf7ede56c490278912ffd0627699c"
+SRC_URI[gphoto2.md5sum] = "0abd5ae8315109ae66bf06ac37902678"
+SRC_URI[gphoto2.sha256sum] = "df87092100e7766c9d0a4323217c91908a9c891c0d3670ebf40b76903be458d1"
 
 inherit autotools pkgconfig gettext
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.23.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb
rename to meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.23.bb
index 623037b..a3bdf9c 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.23.bb
@@ -14,8 +14,8 @@
            file://0001-configure.ac-remove-AM_PO_SUBDIRS.patch \
 "
 
-SRC_URI[libgphoto2.md5sum] = "ae78e7a7936a6962c3a22b256bee1869"
-SRC_URI[libgphoto2.sha256sum] = "417464f0a313fa937e8a71cdf18a371cf01e750830195cd63ae31da0d092b555"
+SRC_URI[libgphoto2.md5sum] = "bf052ce815e607dc781c5b0f3c5ca5c0"
+SRC_URI[libgphoto2.sha256sum] = "d8af23364aa40fd8607f7e073df74e7ace05582f4ba13f1724d12d3c97e8852d"
 
 inherit autotools pkgconfig gettext lib_package
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch b/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch
new file mode 100644
index 0000000..4a727d3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch
@@ -0,0 +1,36 @@
+Fix build with gettext 0.20.x
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3,7 +3,7 @@
+ ## If you don't want it to overwrite it,
+ ## 	Please disable it in the Anjuta project configuration
+ 
+-SUBDIRS = intl po src pixmaps
++SUBDIRS = po src pixmaps
+ 
+ gtkperfdocdir = ${prefix}/doc/gtkperf
+ gtkperfdoc_DATA = \
+--- a/configure.in
++++ b/configure.in
+@@ -31,8 +31,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GE
+ 
+ dnl Languages which your application supports
+ ALL_LINGUAS=""
+-AM_GNU_GETTEXT
+-AM_GNU_GETTEXT_VERSION(0.10.40)
++AM_GNU_GETTEXT([external])
+ 
+ dnl Set PACKAGE_LOCALE_DIR in config.h.
+ if test "x${prefix}" = "xNONE"; then
+@@ -100,7 +99,6 @@ AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "
+ 
+ AC_OUTPUT([
+ Makefile
+-intl/Makefile
+ po/Makefile.in
+ src/Makefile
+ pixmaps/Makefile
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb b/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
index 6fe2582..b4d94ff 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
@@ -7,6 +7,7 @@
            file://Makevars \
            file://0001-Include-stdlib.h-for-exit-API.patch \
            file://0002-timing.c-Fix-format-security-errors.patch \
+           file://gettext.patch \
            "
 
 SRC_URI[md5sum] = "4331dde4bb83865e15482885fcb0cc53"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.102.bb b/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.103.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.102.bb
rename to meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.103.bb
index cd3b662..286d9aa 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.102.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.103.bb
@@ -7,8 +7,8 @@
 
 SRC_URI = "http://gtkwave.sourceforge.net/${BP}.tar.gz"
 
-SRC_URI[md5sum] = "13da7d4235d4031fde52971830458850"
-SRC_URI[sha256sum] = "80bb7cb92db45872209f4ca48fc95a0460e0d89b0fe0c310c836d9b04c77fec7"
+SRC_URI[md5sum] = "5a9a5913f9a02a333b2b23626f153fd7"
+SRC_URI[sha256sum] = "c325abf7cf26c53309a67c0ecaaf196774fa982a717a102c599ac8a516eeeaf7"
 
 inherit pkgconfig autotools gettext texinfo
 DEPENDS = "tcl tk gperf-native bzip2 xz pango zlib gtk+ gdk-pixbuf glib-2.0"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.5.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.5.bb
index 6deb352..0a346bd 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.5.bb
@@ -2,13 +2,13 @@
 SECTION = "libs"
 
 LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=a855a9eb5507fc556e672080c4b428ca"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=822edb694b20ff16ceef85b27f61c11f"
 
 DEPENDS = "tiff zlib libpng jpeg virtual/libsdl2 libwebp"
 
 SRC_URI = "http://www.libsdl.org/projects/SDL_image/release/SDL2_image-${PV}.tar.gz"
-SRC_URI[md5sum] = "c6baf6dfa80fa8a66853661a36a6034e"
-SRC_URI[sha256sum] = "3510c25da735ffcd8ce3b65073150ff4f7f9493b866e85b83738083b556d2368"
+SRC_URI[md5sum] = "f26f3a153360a8f09ed5220ef7b07aea"
+SRC_URI[sha256sum] = "bdd5f6e026682f7d7e1be0b6051b209da2f402a2dd8bd1c4bd9c25ad263108d0"
 
 S = "${WORKDIR}/SDL2_image-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
index 718f3f5..aa246f9 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
@@ -2,12 +2,12 @@
 SECTION = "libs"
 DEPENDS = "virtual/libsdl2 flac libmikmod libvorbis"
 LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=95e0c3cf63f71b950911e698a54b7fc5"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=516daf7a177ad4c8874bb9efa1a69c1f"
 
 SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "aaa0551393993c14a13f72b339c0ed6c"
-SRC_URI[sha256sum] = "4e615e27efca4f439df9af6aa2c6de84150d17cbfd12174b54868c12f19c83bb"
+SRC_URI[md5sum] = "a36e8410cac46b00a4d01752b32c3eb1"
+SRC_URI[sha256sum] = "b4cf5a382c061cd75081cf246c2aa2f9df8db04bdda8dcdc6b6cca55bede2419"
 
 S = "${WORKDIR}/SDL2_mixer-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch
deleted file mode 100644
index 1dfbec6..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From e6d2c0e130811c15b5f5cc10221fae182cb8609e Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Thu, 22 May 2014 10:59:33 +0100
-Subject: [PATCH] freetype-config was removed from oe-core in
-
-commit 5870bd272b0b077d0826fb900b251884c1c05061
-
-    binconfig-disabled: Add class and use
-
----
- configure.in | 38 +++++---------------------------------
- 1 file changed, 5 insertions(+), 33 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index 9b36e15..f300cae 100644
---- a/configure.in
-+++ b/configure.in
-@@ -86,39 +86,11 @@ case "$host" in
- esac
- AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue)
- 
--dnl Check for the FreeType 2 library
--dnl
--dnl Get the cflags and libraries from the freetype-config script
--dnl
--AC_ARG_WITH(freetype-prefix,[  --with-freetype-prefix=PFX   Prefix where FREETYPE is 
--installed (optional)],
--            freetype_prefix="$withval", freetype_prefix="")
--AC_ARG_WITH(freetype-exec-prefix,[  --with-freetype-exec-prefix=PFX Exec prefix 
--where FREETYPE is installed (optional)],
--            freetype_exec_prefix="$withval", freetype_exec_prefix="")
--
--if test x$freetype_exec_prefix != x ; then
--     freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix"
--     if test x${FREETYPE_CONFIG+set} != xset ; then
--        FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config
--     fi
--fi
--if test x$freetype_prefix != x ; then
--     freetype_args="$freetype_args --prefix=$freetype_prefix"
--     if test x${FREETYPE_CONFIG+set} != xset ; then
--        FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config
--     fi
--fi
--AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
--no_freetype=""
--if test "$FREETYPE_CONFIG" = "no" ; then
--    AC_MSG_ERROR([
--*** Unable to find FreeType2 library (http://www.freetype.org/)
--])
--else
--    CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`"
--    LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`"
--fi
-+PKG_CHECK_MODULES(FREETYPE2, freetype2, 
-+    CFLAGS="$CFLAGS $FREETYPE2_CFLAGS"
-+    LIBS="$LIBS $FREETYPE2_LIBS",
-+    AC_MSG_ERROR([*** Unable to find FreeType2 library (http://www.freetype.org/)])
-+)
- 
- dnl Check for SDL
- SDL_VERSION=2.0.0
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.15.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.15.bb
index 6224ad3..7d896cf 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.15.bb
@@ -2,15 +2,14 @@
 SECTION = "libs"
 DEPENDS = "virtual/libsdl2 freetype virtual/libgl"
 LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=cb33e7c4df9fbde389f149ad6bc93ce5"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=4bb27d550fdafcd8f8e4fb8cbb2775ef"
 
 SRC_URI = " \
     http://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-${PV}.tar.gz \
-    file://use.pkg-config.for.freetype2.patch \
     file://automake_foreign.patch \
 "
-SRC_URI[md5sum] = "e53c05e1e7f1382c316afd6c763388b1"
-SRC_URI[sha256sum] = "34db5e20bcf64e7071fe9ae25acaa7d72bdc4f11ab3ce59acc768ab62fe39276"
+SRC_URI[md5sum] = "04fe06ff7623d7bdcb704e82f5f88391"
+SRC_URI[sha256sum] = "a9eceb1ad88c1f1545cd7bd28e7cbc0b2c14191d40238f531a15b01b1b22cd33"
 
 S = "${WORKDIR}/SDL2_ttf-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb
index 4e4acb8..22fc83a 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb
@@ -6,23 +6,38 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
 
 PACKAGECONFIG ??= " \
+    24bpp \
+    filetransfer \
+    ${@bb.utils.contains('LICENSE_FLAGS_WHITELIST','commercial','ffmpeg','',d)} \
     gcrypt \
     gnutls \
     jpeg \
     lzo \
     png \
+    pthread \
     ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '',d)} \
+    sasl \
     sdl \
+    websockets \
     zlib \
 "
+
+PACKAGECONFIG[24bpp] = "-DWITH_24BPP=ON,-DWITH_24BPP=OFF,"
+PACKAGECONFIG[filetransfer] = "-DWITH_TIGHTVNC_FILETRANSFER=ON,-DWITH_TIGHTVNC_FILETRANSFER=OFF,"
+PACKAGECONFIG[ffmpeg] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,ffmpeg,ffmpeg"
 PACKAGECONFIG[gcrypt] = "-DWITH_GCRYPT=ON,-DWITH_GCRYPT=OFF,libgcrypt,libgcrypt"
 PACKAGECONFIG[gnutls] = "-DWITH_GNUTLS=ON,-DWITH_GNUTLS=OFF,gnutls"
 PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg"
+PACKAGECONFIG[ipv6] = "-DWITH_IPv6=ON,-DWITH_IPv6=OFF,"
 PACKAGECONFIG[lzo] = "-DWITH_LZO=ON,-DWITH_LZO=OFF,lzo"
 PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl"
 PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,libpng"
+PACKAGECONFIG[pthread] = "-DWITH_THREADS=ON,-DWITH_THREADS=OFF,"
 PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF,systemd"
+PACKAGECONFIG[sasl] = "-DWITH_SASL=ON,-DWITH_SASL=OFF,cyrus-sasl"
 PACKAGECONFIG[sdl] = "-DWITH_SDL=ON,-DWITH_SDL=OFF,libsdl2"
+PACKAGECONFIG[websockets] = "-DWITH_WEBSOCKETS=ON,-DWITH_WEBSOCKETS=OFF,"
 PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
 
 PACKAGE_BEFORE_PN = "libvncclient"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch
index 4269018..b03723a 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch
@@ -65,8 +65,6 @@
  src/YWizard.h             | 2 +-
  47 files changed, 48 insertions(+), 48 deletions(-)
 
-diff --git a/src/YAlignment.h b/src/YAlignment.h
-index d716c77..7276944 100644
 --- a/src/YAlignment.h
 +++ b/src/YAlignment.h
 @@ -28,7 +28,7 @@
@@ -78,8 +76,6 @@
  
  /**
   * Implementation of all the alignment widgets:
-diff --git a/src/YBarGraph.h b/src/YBarGraph.h
-index 29f7f26..d7eaad2 100644
 --- a/src/YBarGraph.h
 +++ b/src/YBarGraph.h
 @@ -29,7 +29,7 @@
@@ -91,8 +87,6 @@
  class YBarGraphSegment;
  
  /**
-diff --git a/src/YBusyIndicator.h b/src/YBusyIndicator.h
-index 9530fa5..75297d8 100644
 --- a/src/YBusyIndicator.h
 +++ b/src/YBusyIndicator.h
 @@ -27,7 +27,7 @@
@@ -104,8 +98,6 @@
  
  
  /**
-diff --git a/src/YButtonBox.h b/src/YButtonBox.h
-index 84f8dbb..ca51f57 100644
 --- a/src/YButtonBox.h
 +++ b/src/YButtonBox.h
 @@ -30,7 +30,7 @@
@@ -126,8 +118,6 @@
  
  protected:
      /**
-diff --git a/src/YCheckBox.h b/src/YCheckBox.h
-index 793cc77..03f3faa 100644
 --- a/src/YCheckBox.h
 +++ b/src/YCheckBox.h
 @@ -30,7 +30,7 @@
@@ -139,8 +129,6 @@
  
  enum YCheckBoxState
  {
-diff --git a/src/YCheckBoxFrame.h b/src/YCheckBoxFrame.h
-index 243f1a0..7017110 100644
 --- a/src/YCheckBoxFrame.h
 +++ b/src/YCheckBoxFrame.h
 @@ -29,7 +29,7 @@
@@ -152,8 +140,6 @@
  
  
  /**
-diff --git a/src/YComboBox.h b/src/YComboBox.h
-index 416359a..ad0e550 100644
 --- a/src/YComboBox.h
 +++ b/src/YComboBox.h
 @@ -27,7 +27,7 @@
@@ -165,8 +151,6 @@
  
  
  /**
-diff --git a/src/YCommandLine.h b/src/YCommandLine.h
-index 70cb4fe..f344a3b 100644
 --- a/src/YCommandLine.h
 +++ b/src/YCommandLine.h
 @@ -28,7 +28,7 @@
@@ -178,8 +162,6 @@
  
  
  /**
-diff --git a/src/YContextMenu.h b/src/YContextMenu.h
-index a4acb1c..1253002 100644
 --- a/src/YContextMenu.h
 +++ b/src/YContextMenu.h
 @@ -29,7 +29,7 @@
@@ -191,8 +173,6 @@
  
  
  /**
-diff --git a/src/YDateField.h b/src/YDateField.h
-index e5a468d..6164fba 100644
 --- a/src/YDateField.h
 +++ b/src/YDateField.h
 @@ -27,7 +27,7 @@
@@ -204,8 +184,6 @@
  
  /**
   * Input field for entering a date.
-diff --git a/src/YDialog.h b/src/YDialog.h
-index 66c25c0..371209b 100644
 --- a/src/YDialog.h
 +++ b/src/YDialog.h
 @@ -32,7 +32,7 @@
@@ -217,8 +195,6 @@
  class YEvent;
  class YEventFilter;
  
-diff --git a/src/YDownloadProgress.h b/src/YDownloadProgress.h
-index c47ec4f..fe09a9d 100644
 --- a/src/YDownloadProgress.h
 +++ b/src/YDownloadProgress.h
 @@ -28,7 +28,7 @@
@@ -230,8 +206,6 @@
  
  /**
   * DownloadProgress: A progress bar that monitors downloading a file by
-diff --git a/src/YDumbTab.h b/src/YDumbTab.h
-index aec17a3..f8fb250 100644
 --- a/src/YDumbTab.h
 +++ b/src/YDumbTab.h
 @@ -27,7 +27,7 @@
@@ -243,8 +217,6 @@
  
  /**
   * DumbTab: A very simple tab widget that can display and switch between a
-diff --git a/src/YEmpty.h b/src/YEmpty.h
-index 9a3cb36..9b88fbc 100644
 --- a/src/YEmpty.h
 +++ b/src/YEmpty.h
 @@ -29,7 +29,7 @@
@@ -256,8 +228,6 @@
  
  /**
   * A widget with zero size, useful as a placeholder.
-diff --git a/src/YEventFilter.h b/src/YEventFilter.h
-index 3dc1803..74aa62d 100644
 --- a/src/YEventFilter.h
 +++ b/src/YEventFilter.h
 @@ -32,7 +32,7 @@
@@ -269,8 +239,6 @@
  
  
  /**
-diff --git a/src/YFrame.h b/src/YFrame.h
-index 111e8ec..4f8c61e 100644
 --- a/src/YFrame.h
 +++ b/src/YFrame.h
 @@ -29,7 +29,7 @@
@@ -282,8 +250,6 @@
  
  
  /**
-diff --git a/src/YGraph.h b/src/YGraph.h
-index d90d1ae..287d800 100644
 --- a/src/YGraph.h
 +++ b/src/YGraph.h
 @@ -37,7 +37,7 @@
@@ -295,8 +261,6 @@
  
  /**
   * A graph with nodes and edges, rendered with Graphviz.
-diff --git a/src/YImage.h b/src/YImage.h
-index 17bea21..84eb674 100644
 --- a/src/YImage.h
 +++ b/src/YImage.h
 @@ -29,7 +29,7 @@
@@ -308,8 +272,6 @@
  
  /**
   * A picture, possibly animated, loaded from a file.
-diff --git a/src/YInputField.h b/src/YInputField.h
-index 70641ce..fa29b42 100644
 --- a/src/YInputField.h
 +++ b/src/YInputField.h
 @@ -28,7 +28,7 @@
@@ -321,8 +283,6 @@
  
  
  
-diff --git a/src/YIntField.h b/src/YIntField.h
-index 9da0537..8ad2949 100644
 --- a/src/YIntField.h
 +++ b/src/YIntField.h
 @@ -27,7 +27,7 @@
@@ -334,8 +294,6 @@
  
  
  
-diff --git a/src/YLabel.h b/src/YLabel.h
-index d2fff61..bf06d8b 100644
 --- a/src/YLabel.h
 +++ b/src/YLabel.h
 @@ -30,7 +30,7 @@
@@ -347,8 +305,6 @@
  
  /**
   * Implementation of the Label, Heading and OutputField widgets
-diff --git a/src/YLayoutBox.h b/src/YLayoutBox.h
-index e652a45..070eaff 100644
 --- a/src/YLayoutBox.h
 +++ b/src/YLayoutBox.h
 @@ -29,7 +29,7 @@
@@ -360,8 +316,6 @@
  
  /**
   * A vertical or horizontal stacking of widgets, implementing HBox and VBox.
-diff --git a/src/YLogView.h b/src/YLogView.h
-index 53fb9ee..5b44229 100644
 --- a/src/YLogView.h
 +++ b/src/YLogView.h
 @@ -27,7 +27,7 @@
@@ -373,8 +327,6 @@
  
  
  /**
-diff --git a/src/YMenuButton.h b/src/YMenuButton.h
-index 205e730..5df7efb 100644
 --- a/src/YMenuButton.h
 +++ b/src/YMenuButton.h
 @@ -29,7 +29,7 @@
@@ -386,8 +338,6 @@
  
  
  /**
-diff --git a/src/YMultiLineEdit.h b/src/YMultiLineEdit.h
-index c52a6ae..1f792f8 100644
 --- a/src/YMultiLineEdit.h
 +++ b/src/YMultiLineEdit.h
 @@ -27,7 +27,7 @@
@@ -399,8 +349,6 @@
  
  /**
   * A multi-line plain-text area
-diff --git a/src/YMultiProgressMeter.h b/src/YMultiProgressMeter.h
-index 57c758d..f6bec91 100644
 --- a/src/YMultiProgressMeter.h
 +++ b/src/YMultiProgressMeter.h
 @@ -28,7 +28,7 @@
@@ -412,8 +360,6 @@
  
  
  /**
-diff --git a/src/YMultiSelectionBox.h b/src/YMultiSelectionBox.h
-index bbe5a20..f3a2947 100644
 --- a/src/YMultiSelectionBox.h
 +++ b/src/YMultiSelectionBox.h
 @@ -27,7 +27,7 @@
@@ -425,8 +371,6 @@
  
  
  /**
-diff --git a/src/YPartitionSplitter.h b/src/YPartitionSplitter.h
-index 2839bbc..9de1174 100644
 --- a/src/YPartitionSplitter.h
 +++ b/src/YPartitionSplitter.h
 @@ -28,7 +28,7 @@
@@ -438,8 +382,6 @@
  
  
  /**
-diff --git a/src/YProgressBar.h b/src/YProgressBar.h
-index 718352f..baab662 100644
 --- a/src/YProgressBar.h
 +++ b/src/YProgressBar.h
 @@ -27,7 +27,7 @@
@@ -451,8 +393,6 @@
  
  
  /**
-diff --git a/src/YPushButton.h b/src/YPushButton.h
-index 5b65c98..e288252 100644
 --- a/src/YPushButton.h
 +++ b/src/YPushButton.h
 @@ -27,7 +27,7 @@
@@ -464,8 +404,6 @@
  
  
  
-diff --git a/src/YRadioButton.h b/src/YRadioButton.h
-index 9dc62de..5a7c0dd 100644
 --- a/src/YRadioButton.h
 +++ b/src/YRadioButton.h
 @@ -28,7 +28,7 @@
@@ -477,8 +415,6 @@
  
  
  /**
-diff --git a/src/YRadioButtonGroup.h b/src/YRadioButtonGroup.h
-index 063a52e..671a257 100644
 --- a/src/YRadioButtonGroup.h
 +++ b/src/YRadioButtonGroup.h
 @@ -28,7 +28,7 @@
@@ -490,8 +426,6 @@
  
  typedef std::list<YRadioButton *> 		YRadioButtonList;
  typedef YRadioButtonList::iterator		YRadioButtonListIterator;
-diff --git a/src/YRichText.h b/src/YRichText.h
-index 149bfb3..86b3f80 100644
 --- a/src/YRichText.h
 +++ b/src/YRichText.h
 @@ -30,7 +30,7 @@
@@ -503,8 +437,6 @@
  
  
  /**
-diff --git a/src/YSelectionBox.h b/src/YSelectionBox.h
-index 7fc4fb8..9bbf9f3 100644
 --- a/src/YSelectionBox.h
 +++ b/src/YSelectionBox.h
 @@ -27,7 +27,7 @@
@@ -516,8 +448,6 @@
  
  
  /**
-diff --git a/src/YSelectionWidget.h b/src/YSelectionWidget.h
-index abbdfb4..cf05afd 100644
 --- a/src/YSelectionWidget.h
 +++ b/src/YSelectionWidget.h
 @@ -29,7 +29,7 @@
@@ -529,8 +459,6 @@
  
  /**
   * Base class for various kinds of multi-value widgets.
-diff --git a/src/YSimpleInputField.h b/src/YSimpleInputField.h
-index 6d926d4..b93fe6b 100644
 --- a/src/YSimpleInputField.h
 +++ b/src/YSimpleInputField.h
 @@ -27,7 +27,7 @@
@@ -542,8 +470,6 @@
  
  
  /**
-diff --git a/src/YSlider.h b/src/YSlider.h
-index d29f6b8..4bcd7d3 100644
 --- a/src/YSlider.h
 +++ b/src/YSlider.h
 @@ -27,7 +27,7 @@
@@ -555,8 +481,6 @@
  
  
  /**
-diff --git a/src/YSpacing.h b/src/YSpacing.h
-index e8aafd3..066cd68 100644
 --- a/src/YSpacing.h
 +++ b/src/YSpacing.h
 @@ -28,7 +28,7 @@
@@ -568,8 +492,6 @@
  
  
  /**
-diff --git a/src/YSquash.h b/src/YSquash.h
-index 4bd0fb6..3804cc4 100644
 --- a/src/YSquash.h
 +++ b/src/YSquash.h
 @@ -29,7 +29,7 @@
@@ -581,8 +503,6 @@
  
  /**
   * HSquash, VSquash HVSquash: reduce child to its preferred size.
-diff --git a/src/YTable.h b/src/YTable.h
-index 6694f10..469b8ca 100644
 --- a/src/YTable.h
 +++ b/src/YTable.h
 @@ -30,7 +30,7 @@
@@ -594,8 +514,6 @@
  
  
  
-diff --git a/src/YTableHeader.h b/src/YTableHeader.h
-index 70166c2..4ae99b4 100644
 --- a/src/YTableHeader.h
 +++ b/src/YTableHeader.h
 @@ -31,7 +31,7 @@
@@ -607,8 +525,6 @@
  
  /**
   * Helper class for YTable for table column properties:
-diff --git a/src/YTimeField.h b/src/YTimeField.h
-index ab2f9a3..f3a7b94 100644
 --- a/src/YTimeField.h
 +++ b/src/YTimeField.h
 @@ -27,7 +27,7 @@
@@ -620,8 +536,6 @@
  
  
  /**
-diff --git a/src/YTimezoneSelector.cc b/src/YTimezoneSelector.cc
-index 9259b64..e2f9b6f 100644
 --- a/src/YTimezoneSelector.cc
 +++ b/src/YTimezoneSelector.cc
 @@ -32,7 +32,7 @@
@@ -633,8 +547,6 @@
  };
  
  
-diff --git a/src/YTree.h b/src/YTree.h
-index 14fa279..70e1364 100644
 --- a/src/YTree.h
 +++ b/src/YTree.h
 @@ -28,7 +28,7 @@
@@ -646,8 +558,6 @@
  
  
  /**
-diff --git a/src/YUILog.h b/src/YUILog.h
-index 0890bc5..4a927a7 100644
 --- a/src/YUILog.h
 +++ b/src/YUILog.h
 @@ -64,7 +64,7 @@
@@ -659,11 +569,9 @@
  
  enum YUILogLevel_t
  {
-diff --git a/src/YWidget.h b/src/YWidget.h
-index 5b285d0..636a41b 100644
 --- a/src/YWidget.h
 +++ b/src/YWidget.h
-@@ -45,7 +45,7 @@ typedef YChildrenManager<YWidget>	YWidgetChildrenManager;
+@@ -45,7 +45,7 @@ typedef YChildrenManager<YWidget>	YWidge
  typedef YSingleChildManager<YWidget>	YSingleWidgetChildManager;
  typedef YChildrenRejector<YWidget>	YWidgetChildrenRejector;
  
@@ -672,8 +580,6 @@
  
  
  /**
-diff --git a/src/YWizard.h b/src/YWizard.h
-index 7671cbf..975b597 100644
 --- a/src/YWizard.h
 +++ b/src/YWizard.h
 @@ -28,7 +28,7 @@
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb
index d8a9219..7c6f4c1 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb
@@ -18,6 +18,8 @@
 
 DEPENDS += "boost"
 
+EXTRA_OECMAKE += "-DENABLE_WERROR=OFF"
+
 BBCLASSEXTEND = "native nativesdk"
 
 do_configure_prepend () {
diff --git a/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch b/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch
new file mode 100644
index 0000000..6ba1e42
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch
@@ -0,0 +1,31 @@
+From 49dd914109fd1ee9e1e917890bf18f85dd95ff31 Mon Sep 17 00:00:00 2001
+From: Reid Kleckner <rnk@google.com>
+Date: Sun, 29 Dec 2019 23:17:16 -0800
+Subject: [PATCH] Remove glslang::pool_allocator::setAllocator
+
+TPoolAllocator is not copy assignable, so this setter could never have
+been used. After a recent change (878a24ee2), new versions of Clang
+reject this code outright.
+
+Upstream-Status: Backport [https://github.com/KhronosGroup/glslang/commit/0de87ee9a5bf5d094a3faa1a71fd9080e80b6be0]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h b/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h
+index 0e237a6a2..b8eccb883 100644
+--- a/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h
++++ b/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h
+@@ -304,7 +304,6 @@ public:
+     size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
+     size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
+ 
+-    void setAllocator(TPoolAllocator* a) { allocator = *a; }
+     TPoolAllocator& getAllocator() const { return allocator; }
+ 
+ protected:
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb b/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.5.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb
rename to meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.5.bb
index 784f6fb..5f81e84 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.5.bb
@@ -4,9 +4,10 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9753b1b4fba3261c27d1ce5c1acef667"
 
-SRCREV = "214d85228538e71cc63a0d7fa11dd75b1d56cc81"
+SRCREV = "a94f238e37cfe2f142093eb8e5da7775abaa88c6"
 SRC_URI = "git://github.com/baldurk/${BPN}.git;protocol=http;branch=v1.x \
 	   file://0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch \
+	   file://0001-Remove-glslang-pool_allocator-setAllocator.patch \
 "
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch b/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch
new file mode 100644
index 0000000..9b48cdc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch
@@ -0,0 +1,50 @@
+From 4fffcd275b50d08b54b0411679ead98970651bad Mon Sep 17 00:00:00 2001
+From: David Neto <dneto@google.com>
+Date: Fri, 27 Dec 2019 12:05:58 -0500
+Subject: [PATCH] Avoid pessimizing std::move (#3124)
+
+Should fix a warning
+
+Upstream-Status: Backport [https://github.com/KhronosGroup/SPIRV-Tools/commit/8aa423930db37e37086665efcc55944d577c06e5]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ test/opt/pass_fixture.h | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/test/opt/pass_fixture.h b/test/opt/pass_fixture.h
+index 53fb206f..64c089d8 100644
+--- a/test/opt/pass_fixture.h
++++ b/test/opt/pass_fixture.h
+@@ -60,8 +60,7 @@ class PassTest : public TestT {
+   // from pass Process() function.
+   std::tuple<std::vector<uint32_t>, Pass::Status> OptimizeToBinary(
+       Pass* pass, const std::string& original, bool skip_nop) {
+-    context_ =
+-        std::move(BuildModule(env_, consumer_, original, assemble_options_));
++    context_ = BuildModule(env_, consumer_, original, assemble_options_);
+     EXPECT_NE(nullptr, context()) << "Assembling failed for shader:\n"
+                                   << original << std::endl;
+     if (!context()) {
+@@ -197,8 +196,7 @@ class PassTest : public TestT {
+   // messages.
+   template <typename PassT, typename... Args>
+   void SinglePassRunAndFail(const std::string& original, Args&&... args) {
+-    context_ =
+-        std::move(BuildModule(env_, consumer_, original, assemble_options_));
++    context_ = BuildModule(env_, consumer_, original, assemble_options_);
+     EXPECT_NE(nullptr, context()) << "Assembling failed for shader:\n"
+                                   << original << std::endl;
+     std::ostringstream errs;
+@@ -235,8 +233,7 @@ class PassTest : public TestT {
+   void RunAndCheck(const std::string& original, const std::string& expected) {
+     assert(manager_->NumPasses());
+ 
+-    context_ =
+-        std::move(BuildModule(env_, nullptr, original, assemble_options_));
++    context_ = BuildModule(env_, nullptr, original, assemble_options_);
+     ASSERT_NE(nullptr, context());
+ 
+     context()->set_preserve_bindings(OptimizerOptions()->preserve_bindings_);
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch b/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
new file mode 100644
index 0000000..5d37da8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
@@ -0,0 +1,35 @@
+From caf59c46ea5dc49e4dbf756c642b03e52c1b5468 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Dec 2019 07:02:24 -0800
+Subject: [PATCH] Respect CMAKE_INSTALL_LIBDIR in installed CMake files
+
+Upstream-Status: Submitted [https://github.com/google/effcee/pull/36]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt        | 1 +
+ effcee/CMakeLists.txt | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/external/effcee/CMakeLists.txt
++++ b/external/effcee/CMakeLists.txt
+@@ -27,6 +27,7 @@ endif()
+ 
+ include(cmake/setup_build.cmake)
+ include(cmake/utils.cmake)
++include(GNUInstallDirs)
+ 
+ add_subdirectory(third_party)
+ add_subdirectory(effcee)
+--- a/external/effcee/effcee/CMakeLists.txt
++++ b/external/effcee/effcee/CMakeLists.txt
+@@ -14,8 +14,8 @@ install(
+   DESTINATION
+     include/effcee)
+ install(TARGETS effcee
+-  LIBRARY DESTINATION lib
+-  ARCHIVE DESTINATION lib)
++  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+ if(EFFCEE_BUILD_TESTING)
+   add_executable(effcee-test
diff --git a/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-tools-lesspipe-Allow-generic-shell.patch b/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-tools-lesspipe-Allow-generic-shell.patch
deleted file mode 100644
index e9a45c2..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-tools-lesspipe-Allow-generic-shell.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 03127fd5a6eff5ae2ebea2e9c6c01fbf1a0a421a Mon Sep 17 00:00:00 2001
-From: Ankit Navik <ankit.tarot@gmail.com>
-Date: Tue, 25 Dec 2018 14:34:09 +0530
-Subject: [PATCH] tools/lesspipe: Allow generic shell
-
-Upstream-Status: Submitted [https://github.com/KhronosGroup/SPIRV-Tools/pull/2255]
-Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
----
- tools/lesspipe/spirv-lesspipe.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/lesspipe/spirv-lesspipe.sh b/tools/lesspipe/spirv-lesspipe.sh
-index 81e3355..f955259 100644
---- a/tools/lesspipe/spirv-lesspipe.sh
-+++ b/tools/lesspipe/spirv-lesspipe.sh
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/usr/bin/env sh
- # Copyright (c) 2016 The Khronos Group Inc.
- 
- # Licensed under the Apache License, Version 2.0 (the "License");
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb b/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb
index aae11df..8e8388e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb
@@ -9,20 +9,23 @@
 S = "${WORKDIR}/git"
 DEST_DIR = "${S}/external" 
 SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;name=spirv-tools \
-	file://0001-tools-lesspipe-Allow-generic-shell.patch \
 	git://github.com/KhronosGroup/SPIRV-Headers.git;name=spirv-headers;destsuffix=${DEST_DIR}/spirv-headers \
 	git://github.com/google/effcee.git;name=effcee;destsuffix=${DEST_DIR}/effcee \
 	git://github.com/google/re2.git;name=re2;destsuffix=${DEST_DIR}/re2 \
 	git://github.com/google/googletest.git;name=googletest;destsuffix=${DEST_DIR}/googletest \
+        file://0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch \
+        file://0001-Avoid-pessimizing-std-move-3124.patch \
 "
-SRCREV_spirv-tools = "167f1270a9ee641b17c016a545741e4aadfabe86"
-SRCREV_spirv-headers = "4618b86e9e4b027a22040732dfee35e399cd2c47"
-SRCREV_effcee = "8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b"
-SRCREV_re2 = "2cf86e5ab6dcfe045a1f510c2b9a8b012a4158cd"
-SRCREV_googletest = "150613166524c474a8a97df4c01d46b72050c495"
+SRCREV_spirv-tools = "c413b982c316b14e784f50d941814fc737b55b4a"
+SRCREV_spirv-headers = "af64a9e826bf5bb5fcd2434dd71be1e41e922563"
+SRCREV_effcee = "cd25ec17e9382f99a895b9ef53ff3c277464d07d"
+SRCREV_re2 = "5bd613749fd530b576b890283bfb6bc6ea6246cb"
+SRCREV_googletest = "f2fb48c3b3d79a75a88a99fba6576b25d42ec528"
 
 inherit cmake python3native
 
+EXTRA_OECMAKE += "-DSPIRV_WERROR=OFF"
+
 do_install_append() {
 	install -d ${D}/${includedir}/spirv
 	install -m 0644 ${DEST_DIR}/spirv-headers/include/spirv/1.2/* ${D}/${includedir}/spirv	
diff --git a/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb b/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
index 8851729..7db70ec 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
@@ -11,4 +11,6 @@
 SRC_URI[md5sum] = "ae95dbbacc2620e032acea8abab8c9ef"
 SRC_URI[sha256sum] = "36548a588b2d466913423245dda6ffb6313132cd0cec635a117d37b3dab5fd4c"
 
-inherit autotools
+inherit autotools features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb b/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb
index 9932d0a..9897301 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb
@@ -7,7 +7,7 @@
 
 DEPENDS = "webkitgtk gtk+3 glib-2.0"
 
-REQUIRED_DISTRO_FEATURES = "x11"
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
 SRC_URI = "git://git.suckless.org/surf;branch=surf-webkit2 \
            file://0001-config.mk-Fix-compiler-and-linker.patch \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.10.1.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb
rename to meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.10.1.bb
index d0ee2a5..1693779 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.10.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "GPLv2+"
 SECTION = "x11/utils"
 DEPENDS = "xserver-xorg gnutls jpeg libxtst gettext-native fltk"
-RDEPENDS_${PN} = "chkconfig coreutils hicolor-icon-theme"
+RDEPENDS_${PN} = "chkconfig coreutils hicolor-icon-theme perl"
 
 LIC_FILES_CHKSUM = "file://LICENCE.TXT;md5=75b02c2872421380bbd47781d2bd75d3"
 
@@ -15,10 +15,9 @@
 inherit autotools cmake
 B = "${S}"
 
-SRCREV = "6f2301d08e64a965ad36b401ec8dc2b24bc47075"
+SRCREV = "4739493b635372bd40a34640a719f79fa90e4dba"
 
-SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.9-branch \
-           file://0001-tigervnc-remove-includedir.patch \
+SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.10-branch \
            file://0002-do-not-build-tests-sub-directory.patch \
            file://0003-add-missing-dynamic-library-to-FLTK_LIBRARIES.patch \
            file://0004-tigervnc-add-fPIC-option-to-COMPILE_FLAGS.patch \
@@ -26,11 +25,11 @@
 
 # Keep sync with xorg-server in oe-core
 XORG_PN ?= "xorg-server"
-XORG_PV ?= "1.19.6"
+XORG_PV ?= "1.20.6"
 SRC_URI += "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${XORG_PV}.tar.bz2;name=xorg"
 XORG_S = "${WORKDIR}/${XORG_PN}-${XORG_PV}"
-SRC_URI[xorg.md5sum] = "3e47777ff034a331aed2322b078694a8"
-SRC_URI[xorg.sha256sum] = "a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197"
+SRC_URI[xorg.md5sum] = "a98170084f2c8fed480d2ff601f8a14b"
+SRC_URI[xorg.sha256sum] = "6316146304e6e8a36d5904987ae2917b5d5b195dc9fc63d67f7aca137e5a51d1"
 
 # It is the directory containing the Xorg source for the
 # machine on which you are building TigerVNC.
@@ -58,7 +57,7 @@
     xargs tar cf - | (cd ${XSERVER_SOURCE_DIR} && tar xf -)
 
     cd ${XSERVER_SOURCE_DIR}
-    xserverpatch="${S}/unix/xserver119.patch"
+    xserverpatch="${S}/unix/xserver120.patch"
     echo "Apply $xserverpatch"
     patch -p1 -b --suffix .vnc < $xserverpatch
 }
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..59bd97a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,389 @@
+From 5455055660700be18eb8800e56e2423031ed4c76 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 19:59:29 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://github.com/libts/tslib/pull/162]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ plugins/input-raw.c | 59 +++++++++++++++++++++++++++-------------
+ tools/ts_uinput.c   | 66 ++++++++++++++++++++++++++++++---------------
+ 2 files changed, 85 insertions(+), 40 deletions(-)
+
+diff --git a/plugins/input-raw.c b/plugins/input-raw.c
+index 64f0156..f030836 100644
+--- a/plugins/input-raw.c
++++ b/plugins/input-raw.c
+@@ -40,6 +40,11 @@
+ # include <linux/input.h>
+ #endif
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #ifndef EV_SYN /* 2.4 kernel headers */
+ # define EV_SYN 0x00
+ #endif
+@@ -384,7 +389,8 @@ static int ts_input_read(struct tslib_module_info *inf,
+ 						samp->y = i->current_y;
+ 						samp->pressure = i->current_p;
+ 					}
+-					samp->tv = ev.time;
++					samp->tv.tv_sec = ev.input_event_sec;
++					samp->tv.tv_usec = ev.input_event_usec;
+ 			#ifdef DEBUG
+ 				fprintf(stderr,
+ 					"RAW---------------------> %d %d %d %ld.%ld\n",
+@@ -519,7 +525,8 @@ static int ts_input_read(struct tslib_module_info *inf,
+ 					samp->pressure = i->current_p = ev.value;
+ 					break;
+ 				}
+-				samp->tv = ev.time;
++				samp->tv.tv_sec = ev.input_event_sec;
++				samp->tv.tv_usec = ev.input_event_usec;
+ 	#ifdef DEBUG
+ 				fprintf(stderr,
+ 					"RAW---------------------------> %d %d %d\n",
+@@ -536,7 +543,8 @@ static int ts_input_read(struct tslib_module_info *inf,
+ 						samp->x = 0;
+ 						samp->y = 0;
+ 						samp->pressure = 0;
+-						samp->tv = ev.time;
++						samp->tv.tv_sec = ev.input_event_sec;
++						samp->tv.tv_usec = ev.input_event_usec;
+ 						samp++;
+ 						total++;
+ 					}
+@@ -651,7 +659,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 				switch (i->ev[it].code) {
+ 				case BTN_TOUCH:
+ 					i->buf[total][i->slot].pen_down = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					if (i->ev[it].value == 0)
+ 						pen_up = 1;
+@@ -751,7 +760,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					// fall through
+ 				case ABS_MT_POSITION_X:
+ 					i->buf[total][i->slot].x = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_Y:
+@@ -760,7 +770,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					// fall through
+ 				case ABS_MT_POSITION_Y:
+ 					i->buf[total][i->slot].y = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_PRESSURE:
+@@ -769,12 +780,14 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					// fall through
+ 				case ABS_MT_PRESSURE:
+ 					i->buf[total][i->slot].pressure = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_MT_TOOL_X:
+ 					i->buf[total][i->slot].tool_x = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					/* for future use
+ 					 * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
+@@ -782,7 +795,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					break;
+ 				case ABS_MT_TOOL_Y:
+ 					i->buf[total][i->slot].tool_y = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					/* for future use
+ 					 * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
+@@ -790,7 +804,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					break;
+ 				case ABS_MT_TOOL_TYPE:
+ 					i->buf[total][i->slot].tool_type = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					/* for future use
+ 					 * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
+@@ -798,12 +813,14 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					break;
+ 				case ABS_MT_ORIENTATION:
+ 					i->buf[total][i->slot].orientation = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_MT_DISTANCE:
+ 					i->buf[total][i->slot].distance = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 
+ 					if (i->special_device == EGALAX_VERSION_210) {
+@@ -816,34 +833,40 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ 					break;
+ 				case ABS_MT_BLOB_ID:
+ 					i->buf[total][i->slot].blob_id = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_MT_TOUCH_MAJOR:
+ 					i->buf[total][i->slot].touch_major = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					if (i->ev[it].value == 0)
+ 						i->buf[total][i->slot].pressure = 0;
+ 					break;
+ 				case ABS_MT_WIDTH_MAJOR:
+ 					i->buf[total][i->slot].width_major = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_MT_TOUCH_MINOR:
+ 					i->buf[total][i->slot].touch_minor = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_MT_WIDTH_MINOR:
+ 					i->buf[total][i->slot].width_minor = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					break;
+ 				case ABS_MT_TRACKING_ID:
+ 					i->buf[total][i->slot].tracking_id = i->ev[it].value;
+-					i->buf[total][i->slot].tv = i->ev[it].time;
++					i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++					i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ 					i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ 					if (i->ev[it].value == -1)
+ 						i->buf[total][i->slot].pressure = 0;
+diff --git a/tools/ts_uinput.c b/tools/ts_uinput.c
+index 6ca4c3d..1832a07 100644
+--- a/tools/ts_uinput.c
++++ b/tools/ts_uinput.c
+@@ -170,14 +170,16 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ 				continue;
+ 
+ 			if (s[j][i].pen_down == 1) {
+-				data->ev[c].time = s[j][i].tv;
++				data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++				data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 				data->ev[c].type = EV_KEY;
+ 				data->ev[c].code = BTN_TOUCH;
+ 				data->ev[c].value = s[j][i].pen_down;
+ 				c++;
+ 			}
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_SLOT;
+ 			data->ev[c].value = s[j][i].slot;
+@@ -190,111 +192,129 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ 			 * we should use slot 1 and so on.
+ 			 */
+ 			if (i == 0) {
+-				data->ev[c].time = s[j][i].tv;
++				data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++				data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 				data->ev[c].type = EV_ABS;
+ 				data->ev[c].code = ABS_X;
+ 				data->ev[c].value = s[j][i].x;
+ 				c++;
+ 
+-				data->ev[c].time = s[j][i].tv;
++				data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++				data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 				data->ev[c].type = EV_ABS;
+ 				data->ev[c].code = ABS_Y;
+ 				data->ev[c].value = s[j][i].y;
+ 				c++;
+ 
+-				data->ev[c].time = s[j][i].tv;
++				data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++				data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 				data->ev[c].type = EV_ABS;
+ 				data->ev[c].code = ABS_PRESSURE;
+ 				data->ev[c].value = s[j][i].pressure;
+ 				c++;
+ 			}
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_POSITION_X;
+ 			data->ev[c].value = s[j][i].x;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_POSITION_Y;
+ 			data->ev[c].value = s[j][i].y;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_PRESSURE;
+ 			data->ev[c].value = s[j][i].pressure;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_TOUCH_MAJOR;
+ 			data->ev[c].value = s[j][i].touch_major;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_WIDTH_MAJOR;
+ 			data->ev[c].value = s[j][i].width_major;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_TOUCH_MINOR;
+ 			data->ev[c].value = s[j][i].touch_minor;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_WIDTH_MINOR;
+ 			data->ev[c].value = s[j][i].width_minor;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_TOOL_TYPE;
+ 			data->ev[c].value = s[j][i].tool_type;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_TOOL_X;
+ 			data->ev[c].value = s[j][i].tool_x;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_TOOL_Y;
+ 			data->ev[c].value = s[j][i].tool_y;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_ORIENTATION;
+ 			data->ev[c].value = s[j][i].orientation;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_DISTANCE;
+ 			data->ev[c].value = s[j][i].distance;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_BLOB_ID;
+ 			data->ev[c].value = s[j][i].blob_id;
+ 			c++;
+ 
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_ABS;
+ 			data->ev[c].code = ABS_MT_TRACKING_ID;
+ 			data->ev[c].value = s[j][i].tracking_id;
+ 			c++;
+ 
+ 			if (data->mt_type_a == 1) {
+-				data->ev[c].time = s[j][i].tv;
++				data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++				data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 				data->ev[c].type = EV_SYN;
+ 				data->ev[c].code = SYN_MT_REPORT;
+ 				data->ev[c].value = 0;
+@@ -302,7 +322,8 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ 			}
+ 
+ 			if (s[j][i].pen_down == 0) {
+-				data->ev[c].time = s[j][i].tv;
++				data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++				data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 				data->ev[c].type = EV_KEY;
+ 				data->ev[c].code = BTN_TOUCH;
+ 				data->ev[c].value = s[j][i].pen_down;
+@@ -312,7 +333,8 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ 		}
+ 
+ 		if (c > 0) {
+-			data->ev[c].time = s[j][i].tv;
++			data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++			data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ 			data->ev[c].type = EV_SYN;
+ 			data->ev[c].code = SYN_REPORT;
+ 			data->ev[c].value = 0;
+-- 
+2.24.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
index 2bc40d9..bb28ee4 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
@@ -14,6 +14,7 @@
 "
 
 SRC_URI = "https://github.com/kergoth/tslib/releases/download/${PV}/tslib-${PV}.tar.xz;downloadfilename=tslib-${PV}.tar.xz \
+           file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
            file://ts.conf \
            file://tslib.sh \
 "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..d44445f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,111 @@
+From 8ab672ccc67b64058cffac2cd19a0d3b75d5aa25 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 11:43:32 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://github.com/LibVNC/x11vnc/pull/117]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/uinput.c | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/src/uinput.c b/src/uinput.c
+index 28fbad3..343b7c5 100644
+--- a/src/uinput.c
++++ b/src/uinput.c
+@@ -54,6 +54,11 @@ so, delete this exception statement from your version.
+ #include <linux/input.h>
+ #include <linux/uinput.h>
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #if !defined(EV_SYN) || !defined(SYN_REPORT)
+ #undef UINPUT_OK
+ #endif
+@@ -710,6 +715,7 @@ void parse_uinput_str(char *in) {
+ static void ptr_move(int dx, int dy) {
+ #ifdef UINPUT_OK
+ 	struct input_event ev;
++	struct timeval tval;
+ 	int d = direct_rel_fd < 0 ? fd : direct_rel_fd;
+ 
+ 	if (injectable && strchr(injectable, 'M') == NULL) {
+@@ -720,7 +726,9 @@ static void ptr_move(int dx, int dy) {
+ 
+ 	if (db) fprintf(stderr, "ptr_move(%d, %d) fd=%d\n", dx, dy, d);
+ 
+-	gettimeofday(&ev.time, NULL);
++	gettimeofday(&tval, NULL);
++	ev.input_event_sec = tval.tv_sec;
++	ev.input_event_usec = tval.tv_usec;
+ 	ev.type = EV_REL;
+ 	ev.code = REL_Y;
+ 	ev.value = dy;
+@@ -755,6 +763,7 @@ static void apply_tslib(int *x, int *y) {
+ static void ptr_abs(int x, int y, int p) {
+ #ifdef UINPUT_OK
+ 	struct input_event ev;
++	struct timeval tval;
+ 	int x0, y0;
+ 	int d = direct_abs_fd < 0 ? fd : direct_abs_fd;
+ 
+@@ -773,7 +782,9 @@ static void ptr_abs(int x, int y, int p) {
+ 
+ 	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(&tval, NULL);
++	ev.input_event_sec = tval.tv_sec;
++	ev.input_event_usec = tval.tv_usec;
+ 	ev.type = EV_ABS;
+ 	ev.code = ABS_Y;
+ 	ev.value = y;
+@@ -950,6 +961,7 @@ if (0) {usleep(100*1000) ;}
+ static void button_click(int down, int btn) {
+ #ifdef UINPUT_OK
+ 	struct input_event ev;
++	struct timeval tval;
+ 	int d = direct_btn_fd < 0 ? fd : direct_btn_fd;
+ 
+ 	if (injectable && strchr(injectable, 'B') == NULL) {
+@@ -959,7 +971,12 @@ static void button_click(int down, int btn) {
+ 	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(&tval, NULL);
++	gettimeofday(&tval, NULL);
++	ev.input_event_sec = tval.tv_sec;
++	ev.input_event_usec = tval.tv_usec;
++	ev.input_event_sec = tval.tv_sec;
++	ev.input_event_usec = tval.tv_usec;
+ 	ev.type = EV_KEY;
+ 	ev.value = down;
+ 
+@@ -1230,6 +1247,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) {
+ void uinput_key_command(int down, int keysym, rfbClientPtr client) {
+ #ifdef UINPUT_OK
+ 	struct input_event ev;
++	struct timeval tval;
+ 	int scancode;
+ 	allowed_input_t input;
+ 	int d = direct_key_fd < 0 ? fd : direct_key_fd;
+@@ -1253,7 +1271,9 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) {
+ 	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(&tval, NULL);
++	ev.input_event_sec = tval.tv_sec;
++	ev.input_event_usec = tval.tv_usec;
+ 	ev.type = EV_KEY;
+ 	ev.code = (unsigned char) scancode;
+ 	ev.value = down;
diff --git a/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb b/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
index d0c9f77..0d84c42 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
@@ -10,8 +10,9 @@
 SRCREV = "4ca006fed80410bd9b061a1519bd5d9366bb0bc8"
 SRC_URI = "git://github.com/LibVNC/x11vnc \
            file://starting-fix.patch \
-	   file://0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch \
-"
+           file://0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch \
+           file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+           "
 S = "${WORKDIR}/git"
 
 DEPENDS = "\
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch
new file mode 100644
index 0000000..d3beea8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch
@@ -0,0 +1,77 @@
+From 3730a38efad969fb6f8227df07eb4461a078f5a3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 13 Dec 2019 12:59:26 -0800
+Subject: [PATCH] Add configure time check for setsid
+
+Do not assume glibc == linux
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure    | 1 +
+ configure.in | 1 +
+ main.c       | 4 ++--
+ xtermcfg.hin | 1 +
+ 5 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 0aafefc..03e8df0 100755
+--- a/configure
++++ b/configure
+@@ -5411,6 +5411,7 @@ for ac_func in \
+ 	unsetenv \
+ 	sched_yield \
+ 	setpgid \
++	setsid \
+ 	strftime \
+ 	tcgetattr \
+ 	waitpid \
+diff --git a/configure.in b/configure.in
+index d2fee88..74d65df 100644
+--- a/configure.in
++++ b/configure.in
+@@ -99,6 +99,7 @@ AC_CHECK_FUNCS( \
+ 	unsetenv \
+ 	sched_yield \
+ 	setpgid \
++	setsid \
+ 	strftime \
+ 	tcgetattr \
+ 	waitpid \
+diff --git a/main.c b/main.c
+index 5e60589..b81d2be 100644
+--- a/main.c
++++ b/main.c
+@@ -2868,7 +2868,7 @@ main(int argc, char *argv[]ENVP_ARG)
+     }
+ }
+ 
+-#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
++#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
+ #define USE_OPENPTY 1
+ static int opened_tty = -1;
+ #endif
+@@ -4040,7 +4040,7 @@ spawnXTerm(XtermWidget xw, unsigned line_speed)
+ 	    /*
+ 	     * now in child process
+ 	     */
+-#if defined(_POSIX_SOURCE) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
++#if HAVE_SETSID
+ 	    int pgrp = setsid();	/* variable may not be used... */
+ #else
+ 	    int pgrp = getpid();
+diff --git a/xtermcfg.hin b/xtermcfg.hin
+index 1dbc3b8..4f3ff5b 100644
+--- a/xtermcfg.hin
++++ b/xtermcfg.hin
+@@ -96,6 +96,7 @@
+ #undef HAVE_PUTENV		/* AC_CHECK_FUNCS(putenv) */
+ #undef HAVE_SCHED_YIELD		/* AC_CHECK_FUNCS(sched_yield) */
+ #undef HAVE_SETPGID		/* AC_CHECK_FUNCS(setpgid) */
++#undef HAVE_SETSID		/* AC_CHECK_FUNCS(setsid) */
+ #undef HAVE_STDINT_H		/* AC_PROG_CC_STDC */
+ #undef HAVE_STDLIB_H		/* AC_CHECK_HEADERS(stdlib.h) */
+ #undef HAVE_STRFTIME		/* AC_CHECK_FUNCS(strftime) */
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_350.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_351.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_350.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_351.bb
index d98ce47..40ee555 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_350.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_351.bb
@@ -4,10 +4,12 @@
 
 LIC_FILES_CHKSUM = "file://xterm.h;beginline=3;endline=31;md5=c7faceb872d90115e7c0ad90e90c390d"
 
-SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz"
+SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz \
+           file://0001-Add-configure-time-check-for-setsid.patch \
+          "
 
-SRC_URI[md5sum] = "189b593841189da66bc1cea92df602a5"
-SRC_URI[sha256sum] = "aefb59eefd310268080d1a90a447368fb97a9a6737bfecfc3800bf6cc304104d"
+SRC_URI[md5sum] = "a07edfbee2e2f4c6a9ddbf834fa4bbec"
+SRC_URI[sha256sum] = "760a8a10221c9c9744afd86db87c7ad95bbf9be4f5f525fecf39125f0d2a6e16"
 PACKAGECONFIG ?= ""
 PACKAGECONFIG[xft] = "--enable-freetype,--disable-freetype,libxft fontconfig freetype-native"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/yad/yad_4.1.bb b/meta-openembedded/meta-oe/recipes-graphics/yad/yad_5.0.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-graphics/yad/yad_4.1.bb
rename to meta-openembedded/meta-oe/recipes-graphics/yad/yad_5.0.bb
index c69f47d..e53c04b 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/yad/yad_4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/yad/yad_5.0.bb
@@ -6,7 +6,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "git://github.com/v1cont/yad.git"
-SRCREV = "3857a0a8822fc0a7206e804f15cc17b85a5f8ce2"
+SRCREV = "c8eac89cc20d915cb5ed185f423091a291c8af24"
 
 inherit autotools gsettings
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.0.5.bb b/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.1.5.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.0.5.bb
rename to meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.1.5.bb
index 338cafd..3e26340 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.0.5.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.1.5.bb
@@ -22,8 +22,8 @@
 SRC_URI = "${SOURCEFORGE_MIRROR}/ipmiutil/ipmiutil-${PV}.tar.gz \
            file://fix_systemd_path.patch \
           "
-SRC_URI[md5sum] = "5feaf6a827205792e057bb4ff5c4e842"
-SRC_URI[sha256sum] = "b2d7f72535131c7832ba4be13dc33c81513fc3ee43fe797b4b52014600ecee5e"
+SRC_URI[md5sum] = "292d6df25cad678bb27e5c8cdc6748f9"
+SRC_URI[sha256sum] = "58ccdbd5755d7dd72478756715af09e9c73330dfad2b91dbf03d2ac504b301a3"
 
 inherit autotools-brokensep pkgconfig systemd
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
index 02359e7..02c56be 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
@@ -33,6 +33,7 @@
 
 TEST_LIST = "\
     ${@bb.utils.filter('PACKAGECONFIG', 'bpf vm', d)} \
+    rtc \
 "
 
 EXTRA_OEMAKE = '\
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch
new file mode 100644
index 0000000..fe13df2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch
@@ -0,0 +1,86 @@
+From f62b629c1e1e968f90aafbc0cf9116b49eea9d8e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Dec 2019 16:24:37 -0800
+Subject: [PATCH] Include poll.h instead of sys/poll.h
+
+Fixes
+error: redirecting incorrect #include <sys/poll.h> to <poll.h> [-Werror,-W#warnings]
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ perf_examples/branch_smpl.c         | 2 +-
+ perf_examples/syst_smpl.c           | 2 +-
+ perf_examples/task_attach_timeout.c | 2 +-
+ perf_examples/task_smpl.c           | 2 +-
+ perf_examples/x86/bts_smpl.c        | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/perf_examples/branch_smpl.c b/perf_examples/branch_smpl.c
+index 87cd303..4d16b04 100644
+--- a/perf_examples/branch_smpl.c
++++ b/perf_examples/branch_smpl.c
+@@ -32,7 +32,7 @@
+ #include <getopt.h>
+ #include <setjmp.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <locale.h>
+ #include <sys/ioctl.h>
+diff --git a/perf_examples/syst_smpl.c b/perf_examples/syst_smpl.c
+index 04580fd..d059c08 100755
+--- a/perf_examples/syst_smpl.c
++++ b/perf_examples/syst_smpl.c
+@@ -33,7 +33,7 @@
+ #include <setjmp.h>
+ #include <sys/ptrace.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+ #include <fcntl.h>
+diff --git a/perf_examples/task_attach_timeout.c b/perf_examples/task_attach_timeout.c
+index 7fc5524..a0367c8 100644
+--- a/perf_examples/task_attach_timeout.c
++++ b/perf_examples/task_attach_timeout.c
+@@ -36,7 +36,7 @@
+ #include <stdarg.h>
+ #include <sys/wait.h>
+ #include <err.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include "perf_util.h"
+ 
+diff --git a/perf_examples/task_smpl.c b/perf_examples/task_smpl.c
+index dcb7481..95c432c 100644
+--- a/perf_examples/task_smpl.c
++++ b/perf_examples/task_smpl.c
+@@ -37,7 +37,7 @@
+ #include <getopt.h>
+ #include <setjmp.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <locale.h>
+ #include <sys/ioctl.h>
+diff --git a/perf_examples/x86/bts_smpl.c b/perf_examples/x86/bts_smpl.c
+index 6498776..d66d5e6 100644
+--- a/perf_examples/x86/bts_smpl.c
++++ b/perf_examples/x86/bts_smpl.c
+@@ -41,7 +41,7 @@
+ #include <sys/time.h>
+ #include <sys/ptrace.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <sys/resource.h>
+ #include <err.h>
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb
new file mode 100644
index 0000000..9b43b4a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Monitoring tools exploiting the performance monitoring events"
+DESCRIPTION = "This package provides a library, called libpfm4 which is used to develop \
+monitoring tools exploiting the performance monitoring events such as those \
+provided by the Performance Monitoring Unit (PMU) of modern processors."
+HOMEPAGE = "http://perfmon2.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=144822&atid=759953&source=navbar"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0de488f3bd4424e308e2e399cb99c788"
+
+SECTION = "devel"
+
+COMPATIBLE_HOST = "powerpc64"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/perfmon2/${BPN}/libpfm-${PV}.tar.gz \
+           file://0001-Include-poll.h-instead-of-sys-poll.h.patch \
+          "
+SRC_URI[md5sum] = "d8f66cb9bfa7e1434434e0de6409db5b"
+SRC_URI[sha256sum] = "c61c575378b5c17ccfc5806761e4038828610de76e2e34fac9f7fa73ba844b49"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/perfmon2/files/libpfm4/"
+
+EXTRA_OEMAKE = "DESTDIR=\"${D}\" PREFIX=\"${prefix}\" LIBDIR=\"${libdir}\" LDCONFIG=\"true\""
+EXTRA_OEMAKE_append_powerpc = " ARCH=\"powerpc\""
+EXTRA_OEMAKE_append_powerpc64 = " ARCH=\"powerpc\" BITMODE=\"64\""
+
+S = "${WORKDIR}/libpfm-${PV}"
+
+do_install () {
+	oe_runmake install
+}
diff --git a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0003-build-Delete-libebl-from-required-libraries-during-l.patch b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0003-build-Delete-libebl-from-required-libraries-during-l.patch
new file mode 100644
index 0000000..4095643
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0003-build-Delete-libebl-from-required-libraries-during-l.patch
@@ -0,0 +1,34 @@
+From 460851c15e807d1a2515dfb985423f8a6624f4aa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 8 Jan 2020 19:14:19 -0800
+Subject: [PATCH 3/3] build: Delete libebl from required libraries during link
+
+This is a static library from elfutils, which is not made available when
+static archives are disabled, this can result in link failures e.g.
+
+aarch64-yoe-linux-musl/9.2.0/ld: cannot find -lebl
+collect2: error: ld returned 1 exit status
+Makefile:93: recipe for target 'makedumpfile' failed
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 5dce589..c3a4054 100644
+--- a/Makefile
++++ b/Makefile
+@@ -51,7 +51,7 @@ OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART))
+ SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c
+ OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
+ 
+-LIBS = -ldw -lbz2 -lebl -ldl -lelf -lz
++LIBS = -ldw -lbz2 -ldl -lelf -lz
+ ifneq ($(LINKTYPE), dynamic)
+ LIBS := $(LIBS)
+ endif
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.6.bb b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.6.bb
index 9c357bf..6924e39 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.6.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.6.bb
@@ -24,6 +24,7 @@
     ${SOURCEFORGE_MIRROR}/makedumpfile/${BPN}-${PV}.tar.gz \
     file://0001-makedumpfile-replace-hardcode-CFLAGS.patch \
     file://0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch \
+    file://0003-build-Delete-libebl-from-required-libraries-during-l.patch \
 "
 SRC_URI[md5sum] = "6fd632b97ad78d9a0a3b0f0989094064"
 SRC_URI[sha256sum] = "d007eec05cb14f0155f2d06a0d4dc70d321dbb2aec65fccdce953145c8230324"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb b/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
index fc80cc0..9d31160 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
@@ -7,12 +7,46 @@
 PR = "r1"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/id3lib/id3lib-${PV}.tar.gz;name=archive \
-           http://ftp.de.debian.org/debian/pool/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-7.2.diff.gz;name=patch \
+           ${DEBIAN_MIRROR}/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-16.2.debian.tar.xz;name=patch;subdir=${BP} \
            file://acdefine.patch \
 "
 SRC_URI[archive.md5sum] = "19f27ddd2dda4b2d26a559a4f0f402a7"
 SRC_URI[archive.sha256sum] = "2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079"
-SRC_URI[patch.md5sum] = "805c0320a2efb21c40ce06fa13cd7c4b"
-SRC_URI[patch.sha256sum] = "9f03b59ccc8826a5be55a3dcde2f889067d58bdc72bf846416a198c9b933704c"
+SRC_URI[patch.md5sum] = "997c764d3be11c9a51779d93facf1118"
+SRC_URI[patch.sha256sum] = "ac2ee23ec89ba2af51d2c6dd5b1b6bf9f8a9f813de251bc182941439a4053176"
 
 inherit autotools
+
+# Unlike other Debian packages, id3lib*.diff.gz contains another series of
+# patches maintained by quilt. So manually apply them before applying other local
+# patches. Also remove all temp files before leaving, because do_patch() will pop
+# up all previously applied patches in the start
+id3lib_do_patch() {
+    cd ${S}
+    # it's important that we only pop the existing patches when they've
+    # been applied, otherwise quilt will climb the directory tree
+    # and reverse out some completely different set of patches
+    if [ -d ${S}/patches ]; then
+        # whilst this is the default directory, doing it like this
+        # defeats the directory climbing that quilt will otherwise
+        # do; note the directory must exist to defeat this, hence
+        # the test inside which we operate
+        QUILT_PATCHES=${S}/patches quilt pop -a
+    fi
+    if [ -d ${S}/.pc-id3lib ]; then
+        rm -rf ${S}/.pc
+        mv ${S}/.pc-id3lib ${S}/.pc
+        QUILT_PATCHES=${S}/debian/patches quilt pop -a
+        rm -rf ${S}/.pc ${S}/debian
+    fi
+    QUILT_PATCHES=${S}/debian/patches quilt push -a
+    mv ${S}/.pc ${S}/.pc-id3lib
+}
+
+do_unpack[cleandirs] += "${S}"
+
+# We invoke base do_patch at end, to incorporate any local patch
+python do_patch() {
+    bb.build.exec_func('id3lib_do_patch', d)
+    bb.build.exec_func('patch_do_patch', d)
+}
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.0.bb b/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.2.bb
similarity index 68%
rename from meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.0.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.2.bb
index 612000e..73e8e3f 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.2.bb
@@ -5,7 +5,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
 
 SRC_URI = "http://files.libburnia-project.org/releases/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "b32edefdd9a978edc65aacddfe7c588a"
-SRC_URI[sha256sum] = "582b12c236c1365211946f2fe3c254976af37bbec244051f7742a98ded9be2bd"
+SRC_URI[md5sum] = "096f4acfba00f1210a84fb7650f7693d"
+SRC_URI[sha256sum] = "7b32db1719d7f6516cce82a9d00dfddfb3581725db732ea87d41ea8ef0ce5227"
 
 inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.0.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.0.2.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.0.1.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.0.2.bb
index d68e792..2ca74f6 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.0.2.bb
@@ -4,8 +4,8 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=64e753fa7d1ca31632bc383da3b57c27"
 
 SRC_URI = "http://download.videolan.org/pub/videolan/libdvdread/${PV}/libdvdread-${PV}.tar.bz2"
-SRC_URI[md5sum] = "b9eeaaaf3c41b1c3cb6c1622e7219aeb"
-SRC_URI[sha256sum] = "28ce4f0063883ca4d37dfd40a2f6685503d679bca7d88d58e04ee8112382d5bd"
+SRC_URI[md5sum] = "49990935174bf6b2fa501e789c578135"
+SRC_URI[sha256sum] = "f91401af213b219cdde24b46c50a57f29301feb7f965678f1d7ed4632cc6feb0"
 
 inherit autotools lib_package binconfig pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
index 1ba9f0f..29bcfe4 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
@@ -29,6 +29,8 @@
 LUA ?= "lua"
 LUA_mips64  = ""
 LUA_aarch64  = ""
+LUA_powerpc64  = ""
+
 # Note: both lua and libass are required to get on-screen-display (controls)
 PACKAGECONFIG ??= " \
     ${LUA} \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch
deleted file mode 100644
index 5b84af2..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From f7a4b79b3323534460a63b3e6c58ebaf06adf207 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 14 Jul 2017 13:20:05 -0700
-Subject: [PATCH] v4l2-ctl: Do not use getsubopt
-
-POSIX says that behavior when subopts list is empty is undefined.
-musl libs will set value to NULL which leads to crash.
-
-Taken from AlpineLinux
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- utils/v4l2-ctl/v4l2-ctl-common.cpp | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-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/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch
new file mode 100644
index 0000000..57948ad
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch
@@ -0,0 +1,45 @@
+From 137ce23ae677b11e5483ef810751edae7bf96bb9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 18:40:06 -0800
+Subject: [PATCH] Define error_t and include sys/types.h
+
+Fix 'unknown type name' for error_t and u_int32_t.
+u_int32_t is defined in sys/type.h
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/ir-ctl/keymap.h   | 4 ++++
+ utils/keytable/keymap.h | 5 +++++
+ 2 files changed, 9 insertions(+)
+
+diff --git a/utils/ir-ctl/keymap.h b/utils/ir-ctl/keymap.h
+index f2b2963..1f8a3f8 100644
+--- a/utils/ir-ctl/keymap.h
++++ b/utils/ir-ctl/keymap.h
+@@ -2,6 +2,10 @@
+ #ifndef __KEYMAP_H
+ #define __KEYMAP_H
+ 
++#include <sys/types.h>
++#ifndef error_t
++typedef int error_t;
++#endif
+ struct keymap {
+ 	struct keymap *next;
+ 	char *name;
+diff --git a/utils/keytable/keymap.h b/utils/keytable/keymap.h
+index f2b2963..345d55d 100644
+--- a/utils/keytable/keymap.h
++++ b/utils/keytable/keymap.h
+@@ -2,6 +2,11 @@
+ #ifndef __KEYMAP_H
+ #define __KEYMAP_H
+ 
++#include <sys/types.h>
++#ifndef error_t
++typedef int error_t;
++#endif
++
+ struct keymap {
+ 	struct keymap *next;
+ 	char *name;
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..a892676
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,41 @@
+From b213da2d5fcc93cd24fc880c71c717d8e2ce2968 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 18:43:21 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/keytable/keytable.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c
+index 6cb0217..59ff1ee 100644
+--- a/utils/keytable/keytable.c
++++ b/utils/keytable/keytable.c
+@@ -53,6 +53,11 @@
+ 
+ # define N_(string) string
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ struct input_keymap_entry_v2 {
+ #define KEYMAP_BY_INDEX	(1 << 0)
+ 	u_int8_t  flags;
+@@ -1533,7 +1538,7 @@ static void test_event(struct rc_device *rc_dev, int fd)
+ 
+ 		for (i = 0; i < rd / sizeof(struct input_event); i++) {
+ 			printf(_("%ld.%06ld: event type %s(0x%02x)"),
+-				ev[i].time.tv_sec, ev[i].time.tv_usec,
++				ev[i].input_event_sec, ev[i].input_event_usec,
+ 				get_event_name(events_type, ev[i].type), ev[i].type);
+ 
+ 			switch (ev[i].type) {
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
new file mode 100644
index 0000000..ac704c7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
@@ -0,0 +1,48 @@
+From 4a10eab0e31d69948161241b1801c41201a5d081 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 18:50:34 -0800
+Subject: [PATCH] Do not use getsubopt
+
+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.
+
+Imported from Alpine Linux
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/v4l2-ctl/v4l2-ctl-common.cpp | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
+index 651917e..cea57b7 100644
+--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
++++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
+@@ -782,15 +782,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, "Missing suboption value\n");
+-	return true;
++	while (*p && *p != ',')
++		p++;
++
++	if (*p)
++		*p++ = '\0';
++
++	*subs = p;
++	return false;
+ }
+ 
+ void common_cmd(const std::string &media_bus_info, int ch, char *optarg)
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb
index 4154468..9cc2a8e 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.5.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.0.bb
@@ -20,10 +20,12 @@
            file://mediactl-pkgconfig.patch \
            file://export-mediactl-headers.patch \
            file://0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch \
-           file://0003-v4l2-ctl-Do-not-use-getsubopt.patch \
+           file://0005-Define-error_t-and-include-sys-types.h.patch \
+           file://0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+           file://0007-Do-not-use-getsubopt.patch \
            "
-SRC_URI[md5sum] = "de272817133c0dca000a78a5c8c8ec8b"
-SRC_URI[sha256sum] = "ed80242510385017a1dc566e17a285a77222bb301f5bc19386badfcc2c19df1b"
+SRC_URI[md5sum] = "18996bd5e9d83d47055c05de376708cd"
+SRC_URI[sha256sum] = "6cb60d822eeed20486a03cc23e0fc65956fbc1e85e0c1a7477f68bbd9802880d"
 
 EXTRA_OECONF = "--disable-qv4l2 --enable-shared --with-udevdir=${base_libdir}/udev"
 
diff --git a/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb b/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb
index 6834bd4..9fdbbf2 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb
@@ -2,7 +2,7 @@
 SECTION = "console/network"
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=01764c35ae34d9521944bb6ab312af53"
-DEPENDS = "dbus ncurses python python3 libusb1 pps-tools"
+DEPENDS = "dbus ncurses python python3 pps-tools"
 PROVIDES = "virtual/gpsd"
 
 SRC_URI = "${SAVANNAH_GNU_MIRROR}/${BPN}/${BP}.tar.gz \
@@ -23,9 +23,10 @@
 export STAGING_INCDIR
 export STAGING_LIBDIR
 
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} usb"
 PACKAGECONFIG[bluez] = "bluez='true',bluez='false',bluez5"
 PACKAGECONFIG[qt] = "qt='yes' qt_versioned=5,qt='no',qtbase"
+PACKAGECONFIG[usb] = "usb='true',usb='false',libusb1"
 EXTRA_OESCONS = " \
     sysroot=${STAGING_DIR_TARGET} \
     libQgpsmm='false' \
diff --git a/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb b/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
index a3f0903..b33f5a3 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
@@ -14,6 +14,7 @@
 inherit autotools pkgconfig
 
 EXTRA_OECONF = "--enable-freexl=no"
+CFLAGS += "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"
 
 # package plugins for SQLite3
 PACKAGES += "${PN}-plugin"
diff --git a/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb b/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb
deleted file mode 100644
index f45f894..0000000
--- a/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "PROJ.4 - Cartographic Projections library"
-HOMEPAGE = "http://trac.osgeo.org/proj/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=74d9aaec5fa0cd734341e8c4dc91b608"
-
-SRC_URI = "http://download.osgeo.org/proj/proj-${PV}.tar.gz"
-SRC_URI[md5sum] = "d598336ca834742735137c5674b214a1"
-SRC_URI[sha256sum] = "6984542fea333488de5c82eea58d699e4aff4b359200a9971537cd7e047185f7"
-
-inherit autotools pkgconfig lib_package
-
-FILES_${PN} += "${datadir}/proj"
diff --git a/meta-openembedded/meta-oe/recipes-navigation/proj/proj_6.2.0.bb b/meta-openembedded/meta-oe/recipes-navigation/proj/proj_6.2.0.bb
new file mode 100644
index 0000000..fa269d0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-navigation/proj/proj_6.2.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "PROJ.4 - Cartographic Projections library"
+HOMEPAGE = "http://trac.osgeo.org/proj/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74d9aaec5fa0cd734341e8c4dc91b608"
+
+SRC_URI = "http://download.osgeo.org/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "5cde556545828beaffbe50b1bb038480"
+SRC_URI[sha256sum] = "b300c0f872f632ad7f8eb60725edbf14f0f8f52db740a3ab23e7b94f1cd22a50"
+
+DEPENDS = "sqlite3 sqlite3-native"
+
+inherit autotools pkgconfig lib_package
+
+FILES_${PN} += "${datadir}/proj"
diff --git a/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc b/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
new file mode 100644
index 0000000..45bdab3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
@@ -0,0 +1,95 @@
+DESCRIPTION = "CUPS backends, filters, and other software"
+HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters"
+
+LICENSE = "GPLv2 & LGPLv2 & MIT & GPLv2+ & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=516215fd57564996d70327db19b368ff"
+
+SECTION = "console/utils"
+
+DEPENDS = "cups glib-2.0 glib-2.0-native dbus dbus-glib lcms ghostscript poppler qpdf libpng"
+DEPENDS_class-native = "poppler-native glib-2.0-native dbus-native pkgconfig-native gettext-native libpng-native"
+
+SRC_URI = "http://openprinting.org/download/cups-filters/cups-filters-${PV}.tar.gz"
+
+inherit autotools-brokensep gettext pkgconfig
+
+EXTRA_OECONF += " --enable-ghostscript --disable-ldap \
+                       --with-pdftops=hybrid --enable-imagefilters \
+                       --enable-ghostscript --with-gs-path=${bindir}/gs \
+                       --with-pdftops-path=${bindir}/gs \
+                       --with-fontdir=${datadir}/fonts --with-rcdir=no \
+                       --with-cups-rundir=${localstatedir}/run/cups \
+                       --localstatedir=${localstatedir}/var \
+                       --with-rcdir=no \
+                       --without-php"
+
+EXTRA_OECONF_class-native += " --with-pdftops=pdftops \
+                                    --disable-avahi --disable-ghostscript \
+                                    --disable-ldap \
+                                    --with-png --without-jpeg --without-tiff"
+
+BBCLASSEXTEND = "native"
+
+PACKAGECONFIG[jpeg] = "--with-jpeg,--without-jpeg,jpeg"
+PACKAGECONFIG[png] = "--with-png,--without-png,libpng"
+PACKAGECONFIG[tiff] = "--with-tiff,--without-tiff,tiff"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}"
+
+PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+
+DIRFILES = "1"
+
+PACKAGES =+ "\
+	${PN}-gst \
+        ${PN}-data \
+        "
+
+FILES_${PN}-gst = "\
+	${libdir}/cups/filter/gstopxl \
+	${libdir}/cups/filter/gstoraster \
+	"
+
+FILES_${PN}-data = "\
+	${datadir}/cups/data \
+	"
+
+FILES_${PN}-dbg += "\
+	${libdir}/cups/filter/.debug \
+	${libdir}/cups/backend/.debug \
+	"
+
+FILES_${PN} += "\
+        ${libdir}/cups/filter \
+        ${libdir}/cups/backend \
+        ${libdir}/cups/driver \
+        ${datadir}/cups/charsets \
+        ${datadir}/cups/drv \
+        ${datadir}/cups/mime \
+        ${datadir}/cups/ppdc \
+        ${datadir}/ppd/cupsfilters \
+        ${datadir}/cups/braille \
+        ${datadir}/cups/banners \
+        ${datadir}/cups/braille/index.sh \
+        ${datadir}/cups/braille/cups-braille.sh \
+        ${datadir}/cups/braille/indexv3.sh \
+        ${datadir}/cups/braille/indexv4.sh \
+        ${datadir}/cups/banners/topsecret \
+        ${datadir}/cups/banners/secret \
+        ${datadir}/cups/banners/confidential \
+        ${datadir}/cups/banners/unclassified \
+        ${datadir}/cups/banners/form \
+        ${datadir}/cups/banners/classified \
+        ${datadir}/cups/banners/standard \
+"
+
+do_install_append() {
+	# remove banners, braille dirs
+	rm -rf ${D}${datadir}/cups/{banners,braille}
+
+	# remove sysroot path contamination from pkgconfig file
+	sed -i -e 's:${STAGING_DIR_TARGET}::' ${D}/${libdir}/pkgconfig/libcupsfilters.pc
+}
+
+RDEPENDS_${PN} += "bash"
diff --git a/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.26.0.bb b/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.26.0.bb
new file mode 100644
index 0000000..619602a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.26.0.bb
@@ -0,0 +1,4 @@
+include cups-filters.inc
+
+SRC_URI[md5sum] = "afb278c77bb195c2a32fc64e5c8378fb"
+SRC_URI[sha256sum] = "ff8679fcd0c31c25d229262c7ad100ba161ef6b2aa455a2df673dd74ef93f488"
diff --git a/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_9.1.0.bb b/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_9.1.0.bb
new file mode 100644
index 0000000..44a5fea
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_9.1.0.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "PDF transformation/inspection software"
+HOMEPAGE = "http://qpdf.sourceforge.net"
+LICENSE = "Artistic-2.0"
+SECTION = "libs"
+DEPENDS = "libpcre zlib libjpeg-turbo"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/qpdf/qpdf-${PV}.tar.gz"
+
+LIC_FILES_CHKSUM = "file://Artistic-2.0;md5=7806296b9fae874361e6fb10072b7ee3"
+SRC_URI[md5sum] = "090d03ab179c281233f8240ade179d54"
+SRC_URI[sha256sum] = "3abbbb7907f2e750336b9c97e67b6e806aca91ab537402ec080656d63940ed79"
+
+inherit autotools-brokensep gettext
+
+# disable random file detection for cross-compile
+EXTRA_OECONF = "--without-random \
+                --disable-static \
+                --disable-check-autofiles \
+                "
+
+EXTRA_OEMAKE_class-target = "LIBTOOL=${HOST_SYS}-libtool"
+
+S="${WORKDIR}/${BPN}-${PV}"
+
+# avoid Makefile returning error on 'make clean' before configure was run
+CLEANBROKEN = "1"
+
+DEBIAN_NOAUTONAME_libqpdf = "1"
+
+PACKAGES =+ "libqpdf"
+FILES_libqpdf = "${libdir}/libqpdf.so.*"
+
+RDEPEND_${PN} = "libqpdf"
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-Allow-avro-C-to-be-built-on-musl-based-systems.patch b/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-Allow-avro-C-to-be-built-on-musl-based-systems.patch
new file mode 100644
index 0000000..8964d6b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-Allow-avro-C-to-be-built-on-musl-based-systems.patch
@@ -0,0 +1,42 @@
+From 9b39a985bcd6cd34f0820f3680f145d46c0e56bd Mon Sep 17 00:00:00 2001
+From: Titouan Christophe <titouan.christophe@railnova.eu>
+Date: Sun, 8 Dec 2019 01:55:59 +0100
+Subject: [PATCH] Allow avro C to be built on musl based systems.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The type `ssize_t` is defined in sys/types.h, and nowhere else
+in the musl standard C library, so it should be included for the
+compilation to succeed.
+
+This fixes several errors like:
+
+    In file included from src/generic.c:29:0:
+    src/generic.c: In function ‘avro_generic_value_new’:
+    src/avro_generic_internal.h:63:39:
+        error: ‘ssize_t’ undeclared (first use in this function);
+               did you mean ‘size_t’?
+
+Upstream-Status: Backport
+Signed-off-by: Titouan Christophe <titouan.christophe@railnova.eu>
+---
+ lang/c/src/avro_generic_internal.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lang/c/src/avro_generic_internal.h b/lang/c/src/avro_generic_internal.h
+index 709403c03..9843ed652 100644
+--- a/lang/c/src/avro_generic_internal.h
++++ b/lang/c/src/avro_generic_internal.h
+@@ -24,6 +24,8 @@ extern "C" {
+ #define CLOSE_EXTERN
+ #endif
+ 
++#include <sys/types.h>
++
+ #include "avro/generic.h"
+ #include "avro/schema.h"
+ #include "avro/value.h"
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch b/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch
deleted file mode 100644
index 01235d8..0000000
--- a/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 518bb8ccfb3f3fc143fbd571782f3e40573d01b5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 10 Apr 2017 09:15:04 -0700
-Subject: [PATCH] avro-c: Fix build with clang compiler
-
-Clang advertizes itself to be compatible with gcc 4.2.1
-while that was true several years ago, it now supports
-a lot more newer features, the test to just check gcc
-version should be supplanted with clang check as well
-so atomic support in clang can be asserted as well
-
-Fixes
-
-lang/c/src/avro/refcount.h:301:2: error: "No atomic implementation!"
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lang/c/src/avro/refcount.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/lang/c/src/avro/refcount.h b/lang/c/src/avro/refcount.h
-index 69afa4fc..d76ba057 100644
---- a/lang/c/src/avro/refcount.h
-+++ b/lang/c/src/avro/refcount.h
-@@ -118,7 +118,8 @@ avro_refcount_dec(volatile int *refcount)
-  * GCC intrinsics
-  */
- 
--#elif (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40500
-+#elif (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40500 \
-+|| defined(__clang__)
- 
- static inline void
- avro_refcount_set(volatile int *refcount, int value)
--- 
-2.12.2
-
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch b/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch
new file mode 100644
index 0000000..6496b92
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch
@@ -0,0 +1,70 @@
+From f24f863f3a8ca86f44123a58613f62c3b511da1e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 18:23:41 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs instead of hard-coded paths
+
+This ensures that it can be built on platforms where libdir is not
+/usr/lib e.g. ppc64
+
+Upstream-Status: Submitted [https://github.com/apache/avro/pull/749]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lang/c/CMakeLists.txt     |  2 +-
+ lang/c/src/CMakeLists.txt | 16 +++++++++-------
+ 2 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/lang/c/CMakeLists.txt b/lang/c/CMakeLists.txt
+index 11cbf018e..6c8d7aaf3 100644
+--- a/lang/c/CMakeLists.txt
++++ b/lang/c/CMakeLists.txt
+@@ -16,7 +16,7 @@
+ # specific language governing permissions and limitations
+ # under the License.
+ #
+-cmake_minimum_required(VERSION 2.4)
++cmake_minimum_required(VERSION 3.1)
+ project(AvroC)
+ enable_testing()
+ 
+diff --git a/lang/c/src/CMakeLists.txt b/lang/c/src/CMakeLists.txt
+index 6f5659750..c1761c8de 100644
+--- a/lang/c/src/CMakeLists.txt
++++ b/lang/c/src/CMakeLists.txt
+@@ -106,17 +106,19 @@ install(DIRECTORY
+         DESTINATION include
+         FILES_MATCHING PATTERN "*.h")
+ 
++include(GNUInstallDirs)
++
+ if (WIN32)
+ install(TARGETS avro-static
+-        RUNTIME DESTINATION bin
+-        LIBRARY DESTINATION lib
+-        ARCHIVE DESTINATION lib
++	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        )
+ else(WIN32)
+ install(TARGETS avro-static avro-shared
+-        RUNTIME DESTINATION bin
+-        LIBRARY DESTINATION lib
+-        ARCHIVE DESTINATION lib
++	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        )
+ endif(WIN32)
+ 
+@@ -126,7 +128,7 @@ set(prefix ${CMAKE_INSTALL_PREFIX})
+ set(VERSION ${AVRO_VERSION})
+ configure_file(avro-c.pc.in avro-c.pc)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/avro-c.pc
+-        DESTINATION lib/pkgconfig)
++        DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ 
+ add_executable(avrocat avrocat.c)
+ target_link_libraries(avrocat avro-static)
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb b/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb
deleted file mode 100644
index 276fe2b..0000000
--- a/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Apache Avro data serialization system."
-HOMEPAGE = "http://apr.apache.org/"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=73bdf70f268f0b3b9c5a83dd7a6f3324"
-
-DEPENDS = "jansson zlib xz"
-PV .= "+git${SRCPV}"
-
-SRCREV = "4b3677c32b879e0e7f717eb95f9135ac654da760"
-SRC_URI = "git://github.com/apache/avro \
-           file://0001-avro-c-Fix-build-with-clang-compiler.patch;patchdir=../../ \
-"
-
-S = "${WORKDIR}/git/lang/c"
-
-LDFLAGS_append_libc-uclibc = " -lm"
-
-inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.1.bb b/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.1.bb
new file mode 100644
index 0000000..8954c98
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Apache Avro data serialization system."
+HOMEPAGE = "http://apr.apache.org/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d502b41f76179fc84e536236f359cae"
+
+DEPENDS = "jansson zlib xz"
+
+BRANCH = "branch-1.9"
+SRCREV = "89218262cde62e98fcb3778b86cd3f03056c54f3"
+SRC_URI = "git://github.com/apache/avro;branch=${BRANCH} \
+           file://0001-Allow-avro-C-to-be-built-on-musl-based-systems.patch;patchdir=../../ \
+           file://0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch;patchdir=../../ \
+          "
+
+S = "${WORKDIR}/git/lang/c"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb b/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
index 905f953..f4ea173 100644
--- a/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
@@ -21,11 +21,10 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://README.QUICK;md5=81b447d779e278628c843aef92f088fa"
 
-SRCREV = "d3dede3ce4462cd82a15f161af797ca51654546a"
-SRC_URI = "git://github.com/ivmai/bdwgc.git;branch=release-8_0 \
-          "
+DEPENDS = "libatomic-ops"
 
-FILES_${PN}-doc = "${datadir}"
+SRCREV = "d3dede3ce4462cd82a15f161af797ca51654546a"
+SRC_URI = "git://github.com/ivmai/bdwgc.git;branch=release-8_0"
 
 S = "${WORKDIR}/git"
 
@@ -33,12 +32,10 @@
 
 inherit autotools pkgconfig
 
-# by default use external libatomic-ops
-PACKAGECONFIG ??= "libatomic-ops"
-PACKAGECONFIG[libatomic-ops] = "--with-libatomic-ops=yes,--with-libatomic-ops=no,libatomic-ops"
-
 EXTRA_OECONF += "--enable-cpluscplus"
 
 CFLAGS_append_libc-musl = " -D_GNU_SOURCE -DNO_GETCONTEXT -DSEARCH_FOR_DATA_START -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
 
+FILES_${PN}-doc = "${datadir}"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb b/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb
index 404545d..dd129cb 100644
--- a/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb
@@ -8,6 +8,7 @@
 
 SRC_URI += "gitsm://github.com/CLIUtils/CLI11 \
             file://0001-Add-CLANG_TIDY-check.patch \
+            file://0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch b/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch
new file mode 100644
index 0000000..4541cd9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch
@@ -0,0 +1,39 @@
+From 8c51221f748bca1483fe1141e584867d2ff34a07 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 16:26:39 -0800
+Subject: [PATCH] Use GNUInstallDirs instead of hard-coded path
+
+Upstream-Status: Submitted [https://github.com/CLIUtils/CLI11/pull/373]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7073a0b..5236fd2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -120,17 +120,18 @@ endif()
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CLI11ConfigVersion.cmake.in"
+   "${CMAKE_CURRENT_BINARY_DIR}/CLI11ConfigVersion.cmake" @ONLY)
+ 
++include(GNUInstallDirs)
+ # These installs only make sense for a local project
+ if(CUR_PROJ)
+     # Make version available in the install
+     install(FILES "${CMAKE_CURRENT_BINARY_DIR}/CLI11ConfigVersion.cmake"
+-            DESTINATION lib/cmake/CLI11)
++            DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CLI11)
+ 
+     # Install the export target as a file
+     install(EXPORT CLI11Targets
+             FILE CLI11Config.cmake
+             NAMESPACE CLI11::
+-            DESTINATION lib/cmake/CLI11)
++            DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CLI11)
+ 
+     # Use find_package on the installed package
+     export(TARGETS CLI11
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.14.bb b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.14.bb
index 53f6469..11c8eab 100644
--- a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.14.bb
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.14.bb
@@ -5,7 +5,7 @@
 LIC_FILES_CHKSUM = "file://${S}/license.txt;md5=a2e15b954769218ff912468eecd6a02f"
 DEPENDS = "openssl websocketpp zlib boost brotli"
 
-EXTRA_OECMAKE = "-DCPPREST_EXPORT_DIR=cmake -DCPPREST_EXCLUDE_BROTLI=OFF -DWERROR=OFF"
+EXTRA_OECMAKE = "-DCPPREST_EXPORT_DIR=cmake/cpprestsdk -DCPPREST_EXCLUDE_BROTLI=OFF -DWERROR=OFF"
 
 SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master \
            file://disable-float-tests.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
index 76faefe..feb16fa 100644
--- a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
@@ -8,7 +8,6 @@
 
 PACKAGECONFIG[static] = "CFLAGS='${CFLAGS} -pthread -static',,"
 
-do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
 do_deploy() {
     install -m 0755 src/dfu-util ${DEPLOYDIR}/dfu-util-${PV}
     rm -f ${DEPLOYDIR}/dfu-util
@@ -16,3 +15,11 @@
 }
 
 addtask deploy before do_package after do_install
+
+do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
+# cleandirs should possibly be in deploy.bbclass but we need it
+do_deploy[cleandirs] = "${DEPLOYDIR}"
+# clear stamp-extra-info since MACHINE_ARCH is normally put there by
+# deploy.bbclass
+do_deploy[stamp-extra-info] = ""
+
diff --git a/meta-openembedded/meta-oe/recipes-support/enchant/enchant2_2.2.3.bb b/meta-openembedded/meta-oe/recipes-support/enchant/enchant2_2.2.3.bb
deleted file mode 100644
index 42150c8..0000000
--- a/meta-openembedded/meta-oe/recipes-support/enchant/enchant2_2.2.3.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Enchant Spell checker API Library v2"
-SECTION = "libs"
-HOMEPAGE = "https://abiword.github.io/enchant/"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7"
-
-DEPENDS = "glib-2.0"
-
-inherit autotools pkgconfig
-
-SRC_URI = "https://github.com/AbiWord/enchant/releases/download/v${PV}/enchant-${PV}.tar.gz"
-SRC_URI[md5sum] = "4b8abb58e00e93363591b3f5ea4f52d5"
-SRC_URI[sha256sum] = "abd8e915675cff54c0d4da5029d95c528362266557c61c7149d53fa069b8076d"
-
-S = "${WORKDIR}/enchant-${PV}"
-
-EXTRA_OEMAKE = "pkgdatadir=${datadir}/enchant-2"
-
-PACKAGECONFIG ??= "hunspell"
-PACKAGECONFIG[aspell]  = "--with-aspell,--without-aspell,aspell,aspell"
-PACKAGECONFIG[hunspell]  = "--with-hunspell,--without-hunspell,hunspell,hunspell"
-
-FILES_${PN} += " \
-    ${datadir}/enchant-2 \
-    ${libdir}/enchant-2 \
-"
diff --git a/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb b/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb
index 7ad4ac7..0d033f3 100644
--- a/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb
@@ -5,7 +5,10 @@
 inherit features_check binconfig lib_package gtk-icon-cache mime
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI += "file://0003-CMake-build-Force-shared-libs-with-unsuffixed-names.patch"
+SRC_URI += " \
+    file://0003-CMake-build-Force-shared-libs-with-unsuffixed-names.patch \
+    file://0004-Fix-build-error-when-enable-package-config-examples.patch \
+"
 
 EXTRA_OECMAKE = " \
     -DOPTION_BUILD_SHARED_LIBS=ON \
@@ -17,7 +20,7 @@
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
 
-PACKAGECONFIG[examples] = "-DOPTION_BUILD_EXAMPLES=ON,-DOPTION_BUILD_EXAMPLES=OFF,"
+PACKAGECONFIG[examples] = "-DOPTION_BUILD_EXAMPLES=ON,-DOPTION_BUILD_EXAMPLES=OFF,fltk-native"
 PACKAGECONFIG[cairo] = "-DOPTION_CAIRO=ON,-DOPTION_CAIRO=OFF,cairo"
 PACKAGECONFIG[opengl] = "-DOPTION_USE_GL=ON,-DOPTION_USE_GL=OFF,virtual/libgl"
 PACKAGECONFIG[xinerama] = "-DOPTION_USE_XINERAMA=ON,-DOPTION_USE_XINERAMA=OFF,libxinerama"
diff --git a/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch b/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch
new file mode 100644
index 0000000..974c02f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch
@@ -0,0 +1,182 @@
+Fix build error when enable package config examples.
+
+Upstream-Status: Backport [https://github.com/fltk/fltk/commit/16774dd]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+
+From 16774ddc4e000c89e560fde0ced8be9814ef041e Mon Sep 17 00:00:00 2001
+From: Albrecht Schlosser <albrechts.fltk@online.de>
+Date: Wed, 8 Feb 2017 02:06:52 +0000
+Subject: [PATCH] Rename test/help demo program to test/help_dialog.
+
+This change avoids a name conflict with CMake's auto-generated target 'help'
+for "Unix Makefiles", "Ninja", and supposedly other generators as well.
+
+
+git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12171 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
+---
+ CMake/macros.cmake                        |  5 -----
+ documentation/src/examples.dox            |  8 +++----
+ test/CMakeLists.txt                       | 27 +++++++++++++++++++----
+ test/demo.menu                            |  2 +-
+ test/{help.cxx => help_dialog.cxx}        |  6 ++---
+ test/{help-test.html => help_dialog.html} |  0
+ 6 files changed, 31 insertions(+), 17 deletions(-)
+ rename test/{help.cxx => help_dialog.cxx} (88%)
+ rename test/{help-test.html => help_dialog.html} (100%)
+
+diff --git a/CMake/macros.cmake b/CMake/macros.cmake
+index 5b0d0fa..7134fcb 100644
+--- a/CMake/macros.cmake
++++ b/CMake/macros.cmake
+@@ -90,11 +90,6 @@ function(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
+ 
+     set (tname ${NAME})		# target name
+ 
+-    # rename reserved target name "help" (CMake 2.8.12 and later)
+-    if (${tname} MATCHES "^help$")
+-        set (tname "test_help")
+-    endif (${tname} MATCHES "^help$")
+-
+     foreach(src ${SOURCES})
+         if ("${src}" MATCHES "\\.fl$")
+             list(APPEND flsrcs ${src})
+diff --git a/documentation/src/examples.dox b/documentation/src/examples.dox
+index 5105b7b..7961b02 100644
+--- a/documentation/src/examples.dox
++++ b/documentation/src/examples.dox
+@@ -60,7 +60,7 @@ you build FLTK, unlike those in the 'test' directory shown below.
+ </tr>
+ <tr>
+ <td> \ref examples_hello           </td>
+-<td> \ref examples_help            </td>
++<td> \ref examples_help_dialog     </td>
+ <td> \ref examples_iconize         </td>
+ <td> \ref examples_image           </td>
+ <td> \ref examples_inactive        </td>
+@@ -326,13 +326,13 @@ easily under FLTK.
+ tiny demo shows how little is needed to get a functioning application
+ running with FLTK. Quite impressive, I'd say.
+ 
+-\subsection examples_help help
++\subsection examples_help_dialog help_dialog
+ 
+ \par
+-\c help displays the built-in FLTK help browser. The 
++\c help_dialog displays the built-in FLTK help browser. The
+ Fl_Help_Dialog understands a subset of html and renders
+ various image formats. This widget makes it easy to provide help
+-pages to the user without depending on the operating system's 
++pages to the user without depending on the operating system's
+ html browser.
+ 
+ \subsection examples_iconize iconize
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 22ec9ab..4caffa5 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -1,3 +1,22 @@
++#
++# "$Id$"
++#
++# CMakeLists.txt used to build test and demo apps by the CMake build system
++#
++# Copyright 2004-2017 by Bill Spitzak and others.
++#
++# This library is free software. Distribution and use rights are outlined in
++# the file "COPYING" which should have been included with this file.  If this
++# file is missing or damaged, see the license at:
++#
++#     http://www.fltk.org/COPYING.php
++#
++# Please report all bugs and problems on the following page:
++#
++#     http://www.fltk.org/str.php
++#
++#######################################################################
++
+ set(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin/examples)
+ 
+ #######################################################################
+@@ -64,7 +83,7 @@ CREATE_EXAMPLE(file_chooser file_chooser.cxx "fltk;fltk_images")
+ CREATE_EXAMPLE(fonts fonts.cxx fltk)
+ CREATE_EXAMPLE(forms forms.cxx "fltk;fltk_forms")
+ CREATE_EXAMPLE(hello hello.cxx fltk)
+-CREATE_EXAMPLE(help help.cxx "fltk;fltk_images")
++CREATE_EXAMPLE(help_dialog help_dialog.cxx "fltk;fltk_images")
+ CREATE_EXAMPLE(icon icon.cxx fltk)
+ CREATE_EXAMPLE(iconize iconize.cxx fltk)
+ CREATE_EXAMPLE(image image.cxx fltk)
+@@ -134,7 +153,7 @@ endif(FLTK_HAVE_CAIRO)
+ # Note: this is incomplete as of 11 Feb 2015
+ # Todo: currently all files are copied, but some of them need configuration:
+ # - demo.menu: fluid can't be started (wrong path)
+-# - demo.menu: help (help-test.html) can't find its images (not copied)
++# - demo.menu: help_dialog (help_dialog.html) can't find its images (not copied)
+ # - maybe more ...
+ 
+ # prepare for a "better" test file installation path
+@@ -149,11 +168,11 @@ configure_file(demo.menu ${TESTFILE_PATH}/demo.menu COPYONLY)
+ 
+ # use target directory only to avoid redundancy
+ configure_file(rgb.txt ${TESTFILE_PATH} COPYONLY)
+-configure_file(help-test.html ${TESTFILE_PATH} COPYONLY)
++configure_file(help_dialog.html ${TESTFILE_PATH} COPYONLY)
+ configure_file(browser.cxx ${TESTFILE_PATH} COPYONLY)
+ configure_file(editor.cxx ${TESTFILE_PATH} COPYONLY)
+ if(APPLE AND NOT OPTION_APPLE_X11)
+     configure_file(browser.cxx "${TESTFILE_PATH}/browser.app/Contents/Resources/browser.cxx" COPYONLY)
+     configure_file(rgb.txt ${TESTFILE_PATH}/colbrowser.app/Contents/Resources/rgb.txt COPYONLY)
+-    configure_file(help-test.html ${TESTFILE_PATH}/help.app/Contents/Resources/help-test.html COPYONLY)
++    configure_file(help_dialog.html ${TESTFILE_PATH}/help_dialog.app/Contents/Resources/help_dialog.html COPYONLY)
+ endif(APPLE AND NOT OPTION_APPLE_X11)
+diff --git a/test/demo.menu b/test/demo.menu
+index 337a71c..97e522a 100644
+--- a/test/demo.menu
++++ b/test/demo.menu
+@@ -77,7 +77,7 @@
+ 	@o:Font Tests...:@of
+ 		@of:Fonts:fonts
+ 		@of:UTF-8:utf8
+-	@o:HelpDialog:help
++	@o:HelpDialog:help_dialog
+ 	@o:Input Choice:input_choice
+ 	@o:Preferences:preferences
+ 	@o:Threading:threads
+diff --git a/test/help.cxx b/test/help_dialog.cxx
+similarity index 88%
+rename from test/help.cxx
+rename to test/help_dialog.cxx
+index f5c51d6..7866641 100644
+--- a/test/help.cxx
++++ b/test/help_dialog.cxx
+@@ -3,7 +3,7 @@
+ //
+ // Fl_Help_Dialog test program.
+ //
+-// Copyright 1999-2010 by Easy Software Products.
++// Copyright 2011-2017 by Bill Spitzak and others.
+ //
+ // This library is free software. Distribution and use rights are outlined in
+ // the file "COPYING" which should have been included with this file.  If this
+@@ -46,13 +46,13 @@ main(int  argc,			// I - Number of command-line arguments
+     strcpy(buf, argv[0]);
+     char *slash = strrchr(buf, '/');
+     if (slash)
+-      strcpy(slash, "/../Resources/help-test.html");
++      strcpy(slash, "/../Resources/help_dialog.html");
+     help->load(buf);
+   
+ #else
+   
+   if (argc <= 1)
+-    help->load("help-test.html");
++    help->load("help_dialog.html");
+   else
+     help->load(argv[1]);
+   
+diff --git a/test/help-test.html b/test/help_dialog.html
+similarity index 100%
+rename from test/help-test.html
+rename to test/help_dialog.html
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
index 3de01ef..70eef72 100644
--- a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
@@ -9,7 +9,7 @@
 DEPENDS = "libunwind"
 
 SRC_URI = " \
-    git://github.com/google/glog.git;branch=v035 \
+    git://github.com/google/glog.git;nobranch=1 \
     file://0001-Rework-CMake-glog-VERSION-management.patch \
     file://0002-Find-Libunwind-during-configure.patch \
     file://0003-installation-path-fix.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch
new file mode 100644
index 0000000..d2de0bb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch
@@ -0,0 +1,703 @@
+From d7e6fe2ac69333c2d943a4b8eb139373d1fb2ce2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 31 Dec 2019 18:08:09 -0800
+Subject: [PATCH] configure.ac: Rename to configure.ac and use external gettext
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 81 insertions(+)
+ create mode 100644 configure.ac
+
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,81 @@
++dnl Process this file with autoconf to produce a configure script.
++
++# Initialization
++AC_INIT
++AC_CONFIG_SRCDIR([Makefile.am])
++AC_CONFIG_HEADERS([config.h])
++
++# Determine the host and build type. The target is always a PIC.
++AC_CANONICAL_HOST
++
++AM_INIT_AUTOMAKE(hddtemp, 0.3-beta15)
++
++dnl Checks for programs.
++AC_PROG_CC
++AC_PROG_INSTALL
++
++# append the host alias to the tools for cross compiling
++AC_HEADER_STDC
++AC_CHECK_HEADERS(fcntl.h)
++AC_CHECK_HEADERS(iconv.h)
++AC_CHECK_HEADERS(netinet/in.h)
++AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if <netinet/in.h> does not define.])], [#include <netinet/in.h>])
++
++# Checks for typedefs, structures, and compiler characteristics.
++AC_C_CONST
++AC_STRUCT_TM
++
++dnl internationalization macros
++AM_GNU_GETTEXT([external])
++
++AC_CHECK_FUNCS([bindtextdomain textdomain iconv])
++
++dnl reasonable guesses for where stuff is installed
++dnl if we don't do that now, the config.h will use ${prefix}
++dnl for DEFAULT_DATABASE_PATH.
++if test "x$prefix" = "xNONE"; then
++   prefix="/usr/local"
++fi
++if test "x$exec_prefix" = "xNONE"; then
++   exec_prefix=$prefix
++fi
++
++AC_MSG_CHECKING([Location of hddtemp.db])
++DEFAULT_DATABASE_PATH=
++#db_path=\"`eval echo ${datadir}`/misc/hddtemp.db\"
++db_path=\"/usr/share/misc/hddtemp.db\"
++AC_ARG_WITH(db_path,
++               [  --with-db-path=PATH \
++                Default location of hddtemp.db file [/usr/share/misc/hddtemp.db]],
++               [  if test -d "$withval"; then
++                     AC_MSG_FAILURE([new file name for db-path])
++                  fi
++                  DEFAULT_DATABASE_PATH="\"$withval\""
++               ],
++               [  DEFAULT_DATABASE_PATH="$db_path" ])
++AC_MSG_RESULT($DEFAULT_DATABASE_PATH)
++AC_DEFINE_UNQUOTED([DEFAULT_DATABASE_PATH], [$DEFAULT_DATABASE_PATH], [Default location of drive info database])
++
++#CFLAGS="$CFLAGS -Wall -fomit-frame-pointer -Wcast-align"
++CFLAGS="$CFLAGS -Wall -W -Wcast-align"
++
++# Substitute configuration variables
++AC_CONFIG_FILES([Makefile \
++po/Makefile.in \
++m4/Makefile \
++src/Makefile \
++doc/Makefile \
++])
++AC_OUTPUT
++
++AC_MSG_RESULT([
++
++hddtemp-$VERSION is now configured for $canonical_host_type
++
++  Build:                $build
++  Host:                 $host
++  Source directory:     $srcdir
++  Installation prefix:  $prefix
++  C compiler:           $CC $CFLAGS
++
++])
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -12,7 +12,7 @@ EXTRA_DIST = config.rpath  autogen.sh \
+              README \
+              TODO
+ 	     
+-SUBDIRS = intl po m4 src doc
++SUBDIRS = po m4 src doc
+ 
+ CLEANFILES = *~
+ 
+--- a/configure.in
++++ /dev/null
+@@ -1,83 +0,0 @@
+-dnl Process this file with autoconf to produce a configure script.
+-
+-# Initialization
+-AC_INIT
+-AC_CONFIG_SRCDIR([Makefile.am])
+-AC_CONFIG_HEADERS([config.h])
+-
+-# Determine the host and build type. The target is always a PIC.
+-AC_CANONICAL_HOST
+-
+-AM_INIT_AUTOMAKE(hddtemp, 0.3-beta15)
+-
+-dnl Checks for programs.
+-AC_PROG_CC
+-AC_PROG_INSTALL
+-
+-# append the host alias to the tools for cross compiling
+-AC_HEADER_STDC
+-AC_CHECK_HEADERS(fcntl.h)
+-AC_CHECK_HEADERS(iconv.h)
+-AC_CHECK_HEADERS(netinet/in.h)
+-AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if <netinet/in.h> does not define.])], [#include <netinet/in.h>])
+-
+-# Checks for typedefs, structures, and compiler characteristics.
+-AC_C_CONST
+-AC_STRUCT_TM
+-
+-dnl internationalization macros
+-AM_GNU_GETTEXT_VERSION
+-AM_GNU_GETTEXT
+-#AM_GNU_GETTEXT([external])
+-
+-AC_CHECK_FUNCS([bindtextdomain textdomain iconv])
+-
+-dnl reasonable guesses for where stuff is installed
+-dnl if we don't do that now, the config.h will use ${prefix}
+-dnl for DEFAULT_DATABASE_PATH.
+-if test "x$prefix" = "xNONE"; then
+-   prefix="/usr/local"
+-fi
+-if test "x$exec_prefix" = "xNONE"; then
+-   exec_prefix=$prefix
+-fi
+-
+-AC_MSG_CHECKING([Location of hddtemp.db])
+-DEFAULT_DATABASE_PATH=
+-#db_path=\"`eval echo ${datadir}`/misc/hddtemp.db\"
+-db_path=\"/usr/share/misc/hddtemp.db\"
+-AC_ARG_WITH(db_path,
+-               [  --with-db-path=PATH \
+-                Default location of hddtemp.db file [/usr/share/misc/hddtemp.db]],
+-               [  if test -d "$withval"; then
+-                     AC_MSG_FAILURE([new file name for db-path])
+-                  fi
+-                  DEFAULT_DATABASE_PATH="\"$withval\"" 
+-               ],
+-               [  DEFAULT_DATABASE_PATH="$db_path" ])
+-AC_MSG_RESULT($DEFAULT_DATABASE_PATH)
+-AC_DEFINE_UNQUOTED([DEFAULT_DATABASE_PATH], [$DEFAULT_DATABASE_PATH], [Default location of drive info database])
+-
+-#CFLAGS="$CFLAGS -Wall -fomit-frame-pointer -Wcast-align"
+-CFLAGS="$CFLAGS -Wall -W -Wcast-align"
+-
+-# Substitute configuration variables
+-AC_CONFIG_FILES([Makefile  intl/Makefile \
+-po/Makefile.in \
+-m4/Makefile \
+-src/Makefile \
+-doc/Makefile \
+-])
+-AC_OUTPUT
+-
+-AC_MSG_RESULT([
+-
+-hddtemp-$VERSION is now configured for $canonical_host_type
+-
+-  Build:                $build
+-  Host:                 $host
+-  Source directory:     $srcdir
+-  Installation prefix:  $prefix
+-  C compiler:           $CC $CFLAGS
+-  
+-])
+--- a/intl/ChangeLog
++++ /dev/null
+@@ -1,4 +0,0 @@
+-2005-02-24  GNU  <bug-gnu-gettext@gnu.org>
+-
+-	* Version 0.14.2 released.
+-
+--- a/intl/Makefile.in
++++ /dev/null
+@@ -1,500 +0,0 @@
+-# Makefile for directory with message catalog handling library of GNU gettext
+-# Copyright (C) 1995-1998, 2000-2005 Free Software Foundation, Inc.
+-#
+-# This program 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, 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
+-# Library General Public License for more details.
+-#
+-# You should have received a copy of the GNU Library General Public
+-# License along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+-# USA.
+-
+-PACKAGE = @PACKAGE@
+-VERSION = @VERSION@
+-
+-SHELL = /bin/sh
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-top_builddir = ..
+-VPATH = $(srcdir)
+-
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-transform = @program_transform_name@
+-libdir = @libdir@
+-includedir = @includedir@
+-datadir = @datadir@
+-localedir = $(datadir)/locale
+-gettextsrcdir = $(datadir)/gettext/intl
+-aliaspath = $(localedir)
+-subdir = intl
+-
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-MKINSTALLDIRS = @MKINSTALLDIRS@
+-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+-
+-l = @INTL_LIBTOOL_SUFFIX_PREFIX@
+-
+-AR = ar
+-CC = @CC@
+-LIBTOOL = @LIBTOOL@
+-RANLIB = @RANLIB@
+-YACC = @INTLBISON@ -y -d
+-YFLAGS = --name-prefix=__gettext
+-
+-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
+--DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \
+--DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
+--Dset_relocation_prefix=libintl_set_relocation_prefix \
+--Drelocate=libintl_relocate \
+--DDEPENDS_ON_LIBICONV=1 @DEFS@
+-CPPFLAGS = @CPPFLAGS@
+-CFLAGS = @CFLAGS@
+-LDFLAGS = @LDFLAGS@
+-LIBS = @LIBS@
+-
+-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+-
+-HEADERS = \
+-  gmo.h \
+-  gettextP.h \
+-  hash-string.h \
+-  loadinfo.h \
+-  plural-exp.h \
+-  eval-plural.h \
+-  localcharset.h \
+-  relocatable.h \
+-  xsize.h \
+-  printf-args.h printf-args.c \
+-  printf-parse.h wprintf-parse.h printf-parse.c \
+-  vasnprintf.h vasnwprintf.h vasnprintf.c \
+-  os2compat.h \
+-  libgnuintl.h.in
+-SOURCES = \
+-  bindtextdom.c \
+-  dcgettext.c \
+-  dgettext.c \
+-  gettext.c \
+-  finddomain.c \
+-  loadmsgcat.c \
+-  localealias.c \
+-  textdomain.c \
+-  l10nflist.c \
+-  explodename.c \
+-  dcigettext.c \
+-  dcngettext.c \
+-  dngettext.c \
+-  ngettext.c \
+-  plural.y \
+-  plural-exp.c \
+-  localcharset.c \
+-  relocatable.c \
+-  langprefs.c \
+-  localename.c \
+-  log.c \
+-  printf.c \
+-  osdep.c \
+-  os2compat.c \
+-  intl-compat.c
+-OBJECTS = \
+-  bindtextdom.$lo \
+-  dcgettext.$lo \
+-  dgettext.$lo \
+-  gettext.$lo \
+-  finddomain.$lo \
+-  loadmsgcat.$lo \
+-  localealias.$lo \
+-  textdomain.$lo \
+-  l10nflist.$lo \
+-  explodename.$lo \
+-  dcigettext.$lo \
+-  dcngettext.$lo \
+-  dngettext.$lo \
+-  ngettext.$lo \
+-  plural.$lo \
+-  plural-exp.$lo \
+-  localcharset.$lo \
+-  relocatable.$lo \
+-  langprefs.$lo \
+-  localename.$lo \
+-  log.$lo \
+-  printf.$lo \
+-  osdep.$lo \
+-  intl-compat.$lo
+-DISTFILES.common = Makefile.in \
+-config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
+-DISTFILES.generated = plural.c
+-DISTFILES.normal = VERSION
+-DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \
+-libgnuintl.h_vms Makefile.vms \
+-libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
+-DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
+-COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
+-
+-all: all-@USE_INCLUDED_LIBINTL@
+-all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
+-all-no: all-no-@BUILD_INCLUDED_LIBINTL@
+-all-no-yes: libgnuintl.$la
+-all-no-no:
+-
+-libintl.a libgnuintl.a: $(OBJECTS)
+-	rm -f $@
+-	$(AR) cru $@ $(OBJECTS)
+-	$(RANLIB) $@
+-
+-libintl.la libgnuintl.la: $(OBJECTS)
+-	$(LIBTOOL) --mode=link \
+-	  $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
+-	  $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) -lc \
+-	  -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
+-	  -rpath $(libdir) \
+-	  -no-undefined
+-
+-# Libtool's library version information for libintl.
+-# Before making a gettext release, the gettext maintainer must change this
+-# according to the libtool documentation, section "Library interface versions".
+-# Maintainers of other packages that include the intl directory must *not*
+-# change these values.
+-LTV_CURRENT=7
+-LTV_REVISION=1
+-LTV_AGE=4
+-
+-.SUFFIXES:
+-.SUFFIXES: .c .y .o .lo .sin .sed
+-
+-.c.o:
+-	$(COMPILE) $<
+-
+-.y.c:
+-	$(YACC) $(YFLAGS) --output $@ $<
+-	rm -f $*.h
+-
+-bindtextdom.lo: $(srcdir)/bindtextdom.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
+-dcgettext.lo: $(srcdir)/dcgettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
+-dgettext.lo: $(srcdir)/dgettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
+-gettext.lo: $(srcdir)/gettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
+-finddomain.lo: $(srcdir)/finddomain.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
+-loadmsgcat.lo: $(srcdir)/loadmsgcat.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
+-localealias.lo: $(srcdir)/localealias.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
+-textdomain.lo: $(srcdir)/textdomain.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
+-l10nflist.lo: $(srcdir)/l10nflist.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
+-explodename.lo: $(srcdir)/explodename.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
+-dcigettext.lo: $(srcdir)/dcigettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
+-dcngettext.lo: $(srcdir)/dcngettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
+-dngettext.lo: $(srcdir)/dngettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
+-ngettext.lo: $(srcdir)/ngettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
+-plural.lo: $(srcdir)/plural.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
+-plural-exp.lo: $(srcdir)/plural-exp.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
+-localcharset.lo: $(srcdir)/localcharset.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
+-relocatable.lo: $(srcdir)/relocatable.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
+-langprefs.lo: $(srcdir)/langprefs.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c
+-localename.lo: $(srcdir)/localename.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
+-log.lo: $(srcdir)/log.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
+-printf.lo: $(srcdir)/printf.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
+-osdep.lo: $(srcdir)/osdep.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
+-intl-compat.lo: $(srcdir)/intl-compat.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
+-
+-ref-add.sed: $(srcdir)/ref-add.sin
+-	sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
+-	mv t-ref-add.sed ref-add.sed
+-ref-del.sed: $(srcdir)/ref-del.sin
+-	sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
+-	mv t-ref-del.sed ref-del.sed
+-
+-INCLUDES = -I. -I$(srcdir) -I..
+-
+-libgnuintl.h: $(srcdir)/libgnuintl.h.in
+-	sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+-	    -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
+-	    -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
+-	    -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
+-	  < $(srcdir)/libgnuintl.h.in > libgnuintl.h
+-
+-libintl.h: libgnuintl.h
+-	cp libgnuintl.h libintl.h
+-
+-charset.alias: $(srcdir)/config.charset
+-	$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
+-	mv t-$@ $@
+-
+-check: all
+-
+-# We must not install the libintl.h/libintl.a files if we are on a
+-# system which has the GNU gettext() function in its C library or in a
+-# separate library.
+-# If you want to use the one which comes with this version of the
+-# package, you have to use `configure --with-included-gettext'.
+-install: install-exec install-data
+-install-exec: all
+-	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+-	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+-	  $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
+-	  $(LIBTOOL) --mode=install \
+-	    $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
+-	  if test "@RELOCATABLE@" = yes; then \
+-	    dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
+-	    if test -n "$$dependencies"; then \
+-	      rm -f $(DESTDIR)$(libdir)/libintl.la; \
+-	    fi; \
+-	  fi; \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools" \
+-	   && test '@USE_INCLUDED_LIBINTL@' = no \
+-	   && test @GLIBC2@ != no; then \
+-	  $(mkinstalldirs) $(DESTDIR)$(libdir); \
+-	  $(LIBTOOL) --mode=install \
+-	    $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
+-	  rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+-	  $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+-	  $(LIBTOOL) --mode=uninstall \
+-	    rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
+-	else \
+-	  : ; \
+-	fi
+-	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
+-	  temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+-	  dest=$(DESTDIR)$(libdir)/charset.alias; \
+-	  if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+-	    orig=$(DESTDIR)$(libdir)/charset.alias; \
+-	    sed -f ref-add.sed $$orig > $$temp; \
+-	    $(INSTALL_DATA) $$temp $$dest; \
+-	    rm -f $$temp; \
+-	  else \
+-	    if test @GLIBC21@ = no; then \
+-	      orig=charset.alias; \
+-	      sed -f ref-add.sed $$orig > $$temp; \
+-	      $(INSTALL_DATA) $$temp $$dest; \
+-	      rm -f $$temp; \
+-	    fi; \
+-	  fi; \
+-	  $(mkinstalldirs) $(DESTDIR)$(localedir); \
+-	  test -f $(DESTDIR)$(localedir)/locale.alias \
+-	    && orig=$(DESTDIR)$(localedir)/locale.alias \
+-	    || orig=$(srcdir)/locale.alias; \
+-	  temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+-	  dest=$(DESTDIR)$(localedir)/locale.alias; \
+-	  sed -f ref-add.sed $$orig > $$temp; \
+-	  $(INSTALL_DATA) $$temp $$dest; \
+-	  rm -f $$temp; \
+-	else \
+-	  : ; \
+-	fi
+-install-data: all
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+-	  $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
+-	  $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
+-	  dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
+-	  for file in $$dists; do \
+-	    $(INSTALL_DATA) $(srcdir)/$$file \
+-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	  chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
+-	  dists="$(DISTFILES.generated)"; \
+-	  for file in $$dists; do \
+-	    if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+-	    $(INSTALL_DATA) $$dir/$$file \
+-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	  dists="$(DISTFILES.obsolete)"; \
+-	  for file in $$dists; do \
+-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	else \
+-	  : ; \
+-	fi
+-
+-install-strip: install
+-
+-installdirs:
+-	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+-	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools" \
+-	   && test '@USE_INCLUDED_LIBINTL@' = no \
+-	   && test @GLIBC2@ != no; then \
+-	  $(mkinstalldirs) $(DESTDIR)$(libdir); \
+-	else \
+-	  : ; \
+-	fi
+-	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
+-	  $(mkinstalldirs) $(DESTDIR)$(localedir); \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+-	else \
+-	  : ; \
+-	fi
+-
+-# Define this as empty until I found a useful application.
+-installcheck:
+-
+-uninstall:
+-	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+-	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  rm -f $(DESTDIR)$(includedir)/libintl.h; \
+-	  $(LIBTOOL) --mode=uninstall \
+-	    rm -f $(DESTDIR)$(libdir)/libintl.$la; \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools" \
+-	   && test '@USE_INCLUDED_LIBINTL@' = no \
+-	   && test @GLIBC2@ != no; then \
+-	  rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+-	else \
+-	  : ; \
+-	fi
+-	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+-	    temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+-	    dest=$(DESTDIR)$(libdir)/charset.alias; \
+-	    sed -f ref-del.sed $$dest > $$temp; \
+-	    if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+-	      rm -f $$dest; \
+-	    else \
+-	      $(INSTALL_DATA) $$temp $$dest; \
+-	    fi; \
+-	    rm -f $$temp; \
+-	  fi; \
+-	  if test -f $(DESTDIR)$(localedir)/locale.alias; then \
+-	    temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+-	    dest=$(DESTDIR)$(localedir)/locale.alias; \
+-	    sed -f ref-del.sed $$dest > $$temp; \
+-	    if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+-	      rm -f $$dest; \
+-	    else \
+-	      $(INSTALL_DATA) $$temp $$dest; \
+-	    fi; \
+-	    rm -f $$temp; \
+-	  fi; \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
+-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	else \
+-	  : ; \
+-	fi
+-
+-info dvi ps pdf html:
+-
+-$(OBJECTS): ../config.h libgnuintl.h
+-bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
+-dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
+-explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
+-dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
+-dcigettext.$lo: $(srcdir)/eval-plural.h
+-localcharset.$lo: $(srcdir)/localcharset.h
+-localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
+-printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
+-
+-tags: TAGS
+-
+-TAGS: $(HEADERS) $(SOURCES)
+-	here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+-
+-ctags: CTAGS
+-
+-CTAGS: $(HEADERS) $(SOURCES)
+-	here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
+-
+-id: ID
+-
+-ID: $(HEADERS) $(SOURCES)
+-	here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
+-
+-
+-mostlyclean:
+-	rm -f *.a *.la *.o *.obj *.lo core core.*
+-	rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
+-	rm -f -r .libs _libs
+-
+-clean: mostlyclean
+-
+-distclean: clean
+-	rm -f Makefile ID TAGS
+-	if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
+-	  rm -f ChangeLog.inst $(DISTFILES.normal); \
+-	else \
+-	  : ; \
+-	fi
+-
+-maintainer-clean: distclean
+-	@echo "This command is intended for maintainers to use;"
+-	@echo "it deletes files that may require special tools to rebuild."
+-
+-
+-# GNU gettext needs not contain the file `VERSION' but contains some
+-# other files which should not be distributed in other packages.
+-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+-dist distdir: Makefile
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  : ; \
+-	else \
+-	  if test "$(PACKAGE)" = "gettext-runtime"; then \
+-	    additional="$(DISTFILES.gettext)"; \
+-	  else \
+-	    additional="$(DISTFILES.normal)"; \
+-	  fi; \
+-	  $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
+-	  for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
+-	    if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+-	    cp -p $$dir/$$file $(distdir); \
+-	  done; \
+-	fi
+-
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	cd $(top_builddir) && $(SHELL) ./config.status
+-# This would be more efficient, but doesn't work any more with autoconf-2.57,
+-# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
+-#	cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+-
+-# Tell versions [3.59,3.63) of GNU make not to export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
diff --git a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
index 4a871bf..d5da2b6 100644
--- a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
@@ -9,6 +9,7 @@
            file://hddtemp_0.3-beta15-52.diff \
            file://hddtemp-0.3-beta15-autodetect-717479.patch \
            file://0001-backtrace-Replace-struct-ucontext-with-ucontext_t.patch \
+           file://0001-configure.ac-Rename-to-configure.ac-and-use-external.patch \
            file://hddtemp.db \
            file://init \
 "
diff --git a/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch b/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch
index 97f16bb..bdc1fa5 100644
--- a/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch
+++ b/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch
@@ -14,11 +14,9 @@
  src/CMakeLists.txt | 23 -----------------------
  2 files changed, 6 insertions(+), 23 deletions(-)
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 08a65c4..9af14d5 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -817,4 +817,10 @@ endif ()
+@@ -770,4 +770,10 @@ endif ()
  #-----------------------------------------------------------------------------
  configure_file (${HDF_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubconf.h @ONLY)
  
@@ -29,22 +27,22 @@
 +configure_file(H5lib_settings.c H5lib_settings.c COPYONLY)
 +
  include (CMakeInstallation.cmake)
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index d343208..d11525b 100644
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
-@@ -613,32 +613,9 @@ set (H5_PRIVATE_HEADERS
+@@ -613,36 +613,9 @@ set (H5_PRIVATE_HEADERS
  #-----------------------------------------------------------------------------
  add_executable (H5detect ${HDF5_SRC_DIR}/H5detect.c)
  TARGET_C_PROPERTIES (H5detect STATIC " " " ")
 -if (MSVC OR MINGW)
 -  target_link_libraries (H5detect "ws2_32.lib")
 -endif ()
+-if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+-  set_property(TARGET H5detect PROPERTY LINK_FLAGS "-O0")
+-endif ()
 -
--set (CMD $<TARGET_FILE:H5detect>)
 -add_custom_command (
 -    OUTPUT ${HDF5_BINARY_DIR}/H5Tinit.c
--    COMMAND ${CMD}
+-    COMMAND $<TARGET_FILE:H5detect>
 -    ARGS > ${HDF5_BINARY_DIR}/H5Tinit.c
 -    DEPENDS H5detect
 -)
@@ -54,11 +52,13 @@
 -if (MSVC OR MINGW)
 -  target_link_libraries (H5make_libsettings "ws2_32.lib")
 -endif ()
+-if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+-  set_property(TARGET H5make_libsettings PROPERTY LINK_FLAGS "-O0")
+-endif ()
 -
--set (CMD $<TARGET_FILE:H5make_libsettings>)
 -add_custom_command (
 -    OUTPUT ${HDF5_BINARY_DIR}/H5lib_settings.c
--    COMMAND ${CMD}
+-    COMMAND $<TARGET_FILE:H5make_libsettings>
 -    ARGS > ${HDF5_BINARY_DIR}/H5lib_settings.c
 -    DEPENDS H5make_libsettings
 -    WORKING_DIRECTORY ${HDF5_BINARY_DIR}
@@ -66,6 +66,3 @@
  
  if (GENERATE_ERROR_HEADERS)
    find_package (Perl)
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.19.bb b/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.19.bb
rename to meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb
index fcbe9b0..9af2b67 100644
--- a/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.19.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb
@@ -16,9 +16,8 @@
     file://0001-cross-compiling-support.patch \
     file://0002-Remove-suffix-shared-from-shared-library-name.patch \
 "
-
-SRC_URI[md5sum] = "6f0353ee33e99089c110a1c8d2dd1b22"
-SRC_URI[sha256sum] = "59c03816105d57990329537ad1049ba22c2b8afe1890085f0c022b75f1727238"
+SRC_URI[md5sum] = "2d2408f2a9dfb5c7b79998002e9a90e9"
+SRC_URI[sha256sum] = "e5b1b1dee44a64b795a91c3321ab7196d9e0871fe50d42969761794e3899f40d"
 
 FILES_${PN} += "${libdir}/libhdf5.settings ${datadir}/*"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
index a847946..e20bec5 100644
--- a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
@@ -5,8 +5,8 @@
 LICENSE = "GPL-2.0+"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
 
-PV = "0.329"
-SRCREV = "3b93b226177b6a8d219fa5edee2a417758cf74db"
+PV = "0.330"
+SRCREV = "335f72f8ed4ad0cf335526d3c6c4701f7e58f45b"
 SRC_URI = "git://github.com/vcrhonek/${BPN}.git"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.8.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.9.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.8.bb
rename to meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.9.bb
index 4ee06d7..3f7d06e 100644
--- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.9.bb
@@ -4,14 +4,14 @@
 DESCRIPTION = "ImageMagick is a collection of tools for displaying, converting, and \
 editing raster and vector image files. It can read and write over 200 image file formats."
 LICENSE = "ImageMagick"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=05ff94b3ff59fe6fa7489fa26e3d9142"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=41b4fa9af60c88e61484b02c0561181a"
 # FIXME: There are many more checked libraries. All should be added or explicitly disabled to get consistent results.
 DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype libtool"
 
 BASE_PV := "${PV}"
-PV .= "_47"
+PV .= "_13"
 SRC_URI = "git://github.com/ImageMagick/ImageMagick.git "
-SRCREV = "b672df7a44b0ab0219b1fa78b3673c2810ddd374"
+SRCREV = "15b935d64f613b5a0fc9d3fead5c6ec1b0e3908f"
 
 S = "${WORKDIR}/git"
 
@@ -29,6 +29,7 @@
 PACKAGECONFIG[openjpeg] = "--with-openjp2,--without-openjp2,openjpeg"
 PACKAGECONFIG[pango] = "--with-pango,--without-pango,pango cairo"
 PACKAGECONFIG[rsvg] = "--with-rsvg,--without-rsvg,librsvg"
+PACKAGECONFIG[tcmalloc] = "--with-tcmalloc=yes,--with-tcmalloc=no,gperftools"
 PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
 PACKAGECONFIG[wmf] = "--with-wmf,--without-wmf,libwmf"
 PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxt"
diff --git a/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb b/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
index 48271f7..87b1142 100644
--- a/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
@@ -8,8 +8,9 @@
 PR = "r3"
 
 # The github repository provides a cmake and pkg-config integration
-SRCREV = "25078f7156eb8647b3b35dd25f9ae6f8c4ee0589"
-SRC_URI = "git://github.com/OSSystems/inih.git"
+SRCREV = "c858aff8c31fa63ef4d1e0176c10e5928cde9a23"
+SRC_URI = "git://github.com/OSSystems/inih.git \
+          "
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.1.bb b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.1.bb
index 07bf1fa..1a5c184 100644
--- a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.1.bb
@@ -25,8 +25,6 @@
 
 PACKAGECONFIG ??= "python3"
 PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3-core"
-PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
 
+EXTRA_OECONF = "--without-gtk-doc"
 EXTRA_OEMAKE = "py3libdir=${PYTHON_SITEPACKAGES_DIR}"
-
-
diff --git a/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb b/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
index c986e17..eae2446 100644
--- a/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
@@ -15,3 +15,5 @@
 PV = "2.2.0+git${SRCPV}"
 
 S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.3.bb b/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.4.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.3.bb
rename to meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.4.bb
index 82acc49..9b9c191 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.4.bb
@@ -6,7 +6,7 @@
 DEPENDS = "curl openssl zlib libssh2 libgcrypt"
 
 SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.28"
-SRCREV = "7ce88e66a19e3b48340abcdd86aeaae1882e63cc"
+SRCREV = "106a5f27586504ea371528191f0ea3aac2ad432b"
 
 S = "${WORKDIR}/git"
 
@@ -15,6 +15,7 @@
 EXTRA_OECMAKE = "\
     -DBUILD_CLAR=OFF \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DLIB_INSTALL_DIR=${libdir} \
 "
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.0.bb b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.0.bb
rename to meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb
index 5ca2dda..4e77d6c 100644
--- a/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb
@@ -5,7 +5,7 @@
 BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
 
 SRC_URI = "git://github.com/michaelrsweet/mxml.git"
-SRCREV = "c7755b6992a2afdd34dde47fc9be97f1237cfded"
+SRCREV = "e483e5fd8a33386fd46967681521bdd2da2b548f"
 S = "${WORKDIR}/git"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-Update-autotool-files-also-make-it-work-with-latest-.patch b/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-Update-autotool-files-also-make-it-work-with-latest-.patch
new file mode 100644
index 0000000..2c857c2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-Update-autotool-files-also-make-it-work-with-latest-.patch
@@ -0,0 +1,24310 @@
+From 0f1cc1bc615807e81fd2709d4177ca41168446c0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 7 Dec 2019 00:45:23 -0800
+Subject: [PATCH] Update autotool files, also make it work with latest gettext
+
+Upstream-Status: Inappropriate [Dead upstream]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ABOUT-NLS               |  1069 +--
+ ChangeLog               |     7 +
+ Makefile.am             |     2 +-
+ configure.ac            |     6 +-
+ intl/ChangeLog          |     4 -
+ intl/Makefile.in        |   587 --
+ intl/VERSION            |     1 -
+ intl/bindtextdom.c      |   340 -
+ intl/config.charset     |   640 --
+ intl/dcgettext.c        |    56 -
+ intl/dcigettext.c       |  1689 -----
+ intl/dcngettext.c       |    57 -
+ intl/dgettext.c         |    58 -
+ intl/dngettext.c        |    59 -
+ intl/eval-plural.h      |   108 -
+ intl/explodename.c      |   135 -
+ intl/export.h           |     6 -
+ intl/finddomain.c       |   212 -
+ intl/gettext.c          |    63 -
+ intl/gettextP.h         |   297 -
+ intl/gmo.h              |   152 -
+ intl/hash-string.c      |    51 -
+ intl/hash-string.h      |    36 -
+ intl/intl-compat.c      |   133 -
+ intl/intl-exports.c     |    36 -
+ intl/l10nflist.c        |   400 --
+ intl/langprefs.c        |   130 -
+ intl/libgnuintl.h.in    |   419 --
+ intl/libintl.rc         |    38 -
+ intl/loadinfo.h         |   132 -
+ intl/loadmsgcat.c       |  1336 ----
+ intl/localcharset.c     |   461 --
+ intl/localcharset.h     |    42 -
+ intl/locale.alias       |    77 -
+ intl/localealias.c      |   439 --
+ intl/localename.c       |  1507 ----
+ intl/lock.c             |   922 ---
+ intl/lock.h             |  1105 ---
+ intl/log.c              |   116 -
+ intl/ngettext.c         |    65 -
+ intl/os2compat.c        |    98 -
+ intl/os2compat.h        |    46 -
+ intl/osdep.c            |    26 -
+ intl/plural-exp.c       |   155 -
+ intl/plural-exp.h       |   129 -
+ intl/plural.c           |  1981 ------
+ intl/plural.y           |   385 --
+ intl/printf-args.c      |   188 -
+ intl/printf-args.h      |   155 -
+ intl/printf-parse.c     |   590 --
+ intl/printf-parse.h     |    75 -
+ intl/printf.c           |   427 --
+ intl/ref-add.sin        |    31 -
+ intl/ref-del.sin        |    26 -
+ intl/relocatable.c      |   468 --
+ intl/relocatable.h      |    79 -
+ intl/textdomain.c       |   127 -
+ intl/tsearch.c          |   684 --
+ intl/tsearch.h          |    83 -
+ intl/vasnprintf.c       |  4677 -------------
+ intl/vasnprintf.h       |    78 -
+ intl/vasnwprintf.h      |    46 -
+ intl/version.c          |    26 -
+ intl/wprintf-parse.h    |    75 -
+ intl/xsize.h            |   109 -
+ m4/intlmacosx.m4        |    55 +-
+ po/ChangeLog            |     8 +
+ po/Rules-quot           |    19 +-
+ po/en@boldquot.header   |     2 +-
+ po/en@quot.header       |     2 +-
+ po/insert-header.sin    |     5 +
+ po/remove-potcdate.sin  |     8 +-
+ 74 files changed, 1335 insertions(+), 38646 deletions(-)
+ delete mode 100644 intl/ChangeLog
+ delete mode 100644 intl/Makefile.in
+ delete mode 100644 intl/VERSION
+ delete mode 100644 intl/bindtextdom.c
+ delete mode 100755 intl/config.charset
+ delete mode 100644 intl/dcgettext.c
+ delete mode 100644 intl/dcigettext.c
+ delete mode 100644 intl/dcngettext.c
+ delete mode 100644 intl/dgettext.c
+ delete mode 100644 intl/dngettext.c
+ delete mode 100644 intl/eval-plural.h
+ delete mode 100644 intl/explodename.c
+ delete mode 100644 intl/export.h
+ delete mode 100644 intl/finddomain.c
+ delete mode 100644 intl/gettext.c
+ delete mode 100644 intl/gettextP.h
+ delete mode 100644 intl/gmo.h
+ delete mode 100644 intl/hash-string.c
+ delete mode 100644 intl/hash-string.h
+ delete mode 100644 intl/intl-compat.c
+ delete mode 100644 intl/intl-exports.c
+ delete mode 100644 intl/l10nflist.c
+ delete mode 100644 intl/langprefs.c
+ delete mode 100644 intl/libgnuintl.h.in
+ delete mode 100644 intl/libintl.rc
+ delete mode 100644 intl/loadinfo.h
+ delete mode 100644 intl/loadmsgcat.c
+ delete mode 100644 intl/localcharset.c
+ delete mode 100644 intl/localcharset.h
+ delete mode 100644 intl/locale.alias
+ delete mode 100644 intl/localealias.c
+ delete mode 100644 intl/localename.c
+ delete mode 100644 intl/lock.c
+ delete mode 100644 intl/lock.h
+ delete mode 100644 intl/log.c
+ delete mode 100644 intl/ngettext.c
+ delete mode 100644 intl/os2compat.c
+ delete mode 100644 intl/os2compat.h
+ delete mode 100644 intl/osdep.c
+ delete mode 100644 intl/plural-exp.c
+ delete mode 100644 intl/plural-exp.h
+ delete mode 100644 intl/plural.c
+ delete mode 100644 intl/plural.y
+ delete mode 100644 intl/printf-args.c
+ delete mode 100644 intl/printf-args.h
+ delete mode 100644 intl/printf-parse.c
+ delete mode 100644 intl/printf-parse.h
+ delete mode 100644 intl/printf.c
+ delete mode 100644 intl/ref-add.sin
+ delete mode 100644 intl/ref-del.sin
+ delete mode 100644 intl/relocatable.c
+ delete mode 100644 intl/relocatable.h
+ delete mode 100644 intl/textdomain.c
+ delete mode 100644 intl/tsearch.c
+ delete mode 100644 intl/tsearch.h
+ delete mode 100644 intl/vasnprintf.c
+ delete mode 100644 intl/vasnprintf.h
+ delete mode 100644 intl/vasnwprintf.h
+ delete mode 100644 intl/version.c
+ delete mode 100644 intl/wprintf-parse.h
+ delete mode 100644 intl/xsize.h
+
+--- a/ABOUT-NLS
++++ b/ABOUT-NLS
+@@ -1,1068 +1 @@
+-1 Notes on the Free Translation Project
+-***************************************
+-
+-Free software is going international!  The Free Translation Project is
+-a way to get maintainers of free software, translators, and users all
+-together, so that free software will gradually become able to speak many
+-languages.  A few packages already provide translations for their
+-messages.
+-
+-   If you found this `ABOUT-NLS' file inside a distribution, you may
+-assume that the distributed package does use GNU `gettext' internally,
+-itself available at your nearest GNU archive site.  But you do _not_
+-need to install GNU `gettext' prior to configuring, installing or using
+-this package with messages translated.
+-
+-   Installers will find here some useful hints.  These notes also
+-explain how users should proceed for getting the programs to use the
+-available translations.  They tell how people wanting to contribute and
+-work on translations can contact the appropriate team.
+-
+-   When reporting bugs in the `intl/' directory or bugs which may be
+-related to internationalization, you should tell about the version of
+-`gettext' which is used.  The information can be found in the
+-`intl/VERSION' file, in internationalized packages.
+-
+-1.1 Quick configuration advice
+-==============================
+-
+-If you want to exploit the full power of internationalization, you
+-should configure it using
+-
+-     ./configure --with-included-gettext
+-
+-to force usage of internationalizing routines provided within this
+-package, despite the existence of internationalizing capabilities in the
+-operating system where this package is being installed.  So far, only
+-the `gettext' implementation in the GNU C library version 2 provides as
+-many features (such as locale alias, message inheritance, automatic
+-charset conversion or plural form handling) as the implementation here.
+-It is also not possible to offer this additional functionality on top
+-of a `catgets' implementation.  Future versions of GNU `gettext' will
+-very likely convey even more functionality.  So it might be a good idea
+-to change to GNU `gettext' as soon as possible.
+-
+-   So you need _not_ provide this option if you are using GNU libc 2 or
+-you have installed a recent copy of the GNU gettext package with the
+-included `libintl'.
+-
+-1.2 INSTALL Matters
+-===================
+-
+-Some packages are "localizable" when properly installed; the programs
+-they contain can be made to speak your own native language.  Most such
+-packages use GNU `gettext'.  Other packages have their own ways to
+-internationalization, predating GNU `gettext'.
+-
+-   By default, this package will be installed to allow translation of
+-messages.  It will automatically detect whether the system already
+-provides the GNU `gettext' functions.  If not, the included GNU
+-`gettext' library will be used.  This library is wholly contained
+-within this package, usually in the `intl/' subdirectory, so prior
+-installation of the GNU `gettext' package is _not_ required.
+-Installers may use special options at configuration time for changing
+-the default behaviour.  The commands:
+-
+-     ./configure --with-included-gettext
+-     ./configure --disable-nls
+-
+-will, respectively, bypass any pre-existing `gettext' to use the
+-internationalizing routines provided within this package, or else,
+-_totally_ disable translation of messages.
+-
+-   When you already have GNU `gettext' installed on your system and run
+-configure without an option for your new package, `configure' will
+-probably detect the previously built and installed `libintl.a' file and
+-will decide to use this.  This might not be desirable.  You should use
+-the more recent version of the GNU `gettext' library.  I.e. if the file
+-`intl/VERSION' shows that the library which comes with this package is
+-more recent, you should use
+-
+-     ./configure --with-included-gettext
+-
+-to prevent auto-detection.
+-
+-   The configuration process will not test for the `catgets' function
+-and therefore it will not be used.  The reason is that even an
+-emulation of `gettext' on top of `catgets' could not provide all the
+-extensions of the GNU `gettext' library.
+-
+-   Internationalized packages usually have many `po/LL.po' files, where
+-LL gives an ISO 639 two-letter code identifying the language.  Unless
+-translations have been forbidden at `configure' time by using the
+-`--disable-nls' switch, all available translations are installed
+-together with the package.  However, the environment variable `LINGUAS'
+-may be set, prior to configuration, to limit the installed set.
+-`LINGUAS' should then contain a space separated list of two-letter
+-codes, stating which languages are allowed.
+-
+-1.3 Using This Package
+-======================
+-
+-As a user, if your language has been installed for this package, you
+-only have to set the `LANG' environment variable to the appropriate
+-`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
+-`LC_xxx' environment variables set, you should unset them before
+-setting `LANG', otherwise the setting of `LANG' will not have the
+-desired effect.  Here `LL' is an ISO 639 two-letter language code, and
+-`CC' is an ISO 3166 two-letter country code.  For example, let's
+-suppose that you speak German and live in Germany.  At the shell
+-prompt, merely execute `setenv LANG de_DE' (in `csh'),
+-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+-This can be done from your `.login' or `.profile' file, once and for
+-all.
+-
+-   You might think that the country code specification is redundant.
+-But in fact, some languages have dialects in different countries.  For
+-example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
+-country code serves to distinguish the dialects.
+-
+-   The locale naming convention of `LL_CC', with `LL' denoting the
+-language and `CC' denoting the country, is the one use on systems based
+-on GNU libc.  On other systems, some variations of this scheme are
+-used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
+-locales supported by your system for your language by running the
+-command `locale -a | grep '^LL''.
+-
+-   Not all programs have translations for all languages.  By default, an
+-English message is shown in place of a nonexistent translation.  If you
+-understand other languages, you can set up a priority list of languages.
+-This is done through a different environment variable, called
+-`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+-for the purpose of message handling, but you still need to have `LANG'
+-set to the primary language; this is required by other parts of the
+-system libraries.  For example, some Swedish users who would rather
+-read translations in German than English for when Swedish is not
+-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+-
+-   Special advice for Norwegian users: The language code for Norwegian
+-bokma*l changed from `no' to `nb' recently (in 2003).  During the
+-transition period, while some message catalogs for this language are
+-installed under `nb' and some older ones under `no', it's recommended
+-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
+-older translations are used.
+-
+-   In the `LANGUAGE' environment variable, but not in the `LANG'
+-environment variable, `LL_CC' combinations can be abbreviated as `LL'
+-to denote the language's main dialect.  For example, `de' is equivalent
+-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+-(Portuguese as spoken in Portugal) in this context.
+-
+-1.4 Translating Teams
+-=====================
+-
+-For the Free Translation Project to be a success, we need interested
+-people who like their own language and write it well, and who are also
+-able to synergize with other translators speaking the same language.
+-Each translation team has its own mailing list.  The up-to-date list of
+-teams can be found at the Free Translation Project's homepage,
+-`http://translationproject.org/', in the "Teams" area.
+-
+-   If you'd like to volunteer to _work_ at translating messages, you
+-should become a member of the translating team for your own language.
+-The subscribing address is _not_ the same as the list itself, it has
+-`-request' appended.  For example, speakers of Swedish can send a
+-message to `sv-request@li.org', having this message body:
+-
+-     subscribe
+-
+-   Keep in mind that team members are expected to participate
+-_actively_ in translations, or at solving translational difficulties,
+-rather than merely lurking around.  If your team does not exist yet and
+-you want to start one, or if you are unsure about what to do or how to
+-get started, please write to `coordinator@translationproject.org' to
+-reach the coordinator for all translator teams.
+-
+-   The English team is special.  It works at improving and uniformizing
+-the terminology in use.  Proven linguistic skills are praised more than
+-programming skills, here.
+-
+-1.5 Available Packages
+-======================
+-
+-Languages are not equally supported in all packages.  The following
+-matrix shows the current state of internationalization, as of November
+-2007.  The matrix shows, in regard of each package, for which languages
+-PO files have been submitted to translation coordination, with a
+-translation percentage of at least 50%.
+-
+-     Ready PO files       af am ar az be bg bs ca cs cy da de el en en_GB eo
+-                        +----------------------------------------------------+
+-     Compendium         |                      []       [] []        []      |
+-     a2ps               |             []                [] [] []     []      |
+-     aegis              |                                  ()                |
+-     ant-phone          |                                  ()                |
+-     anubis             |                                  []                |
+-     ap-utils           |                                                    |
+-     aspell             |                      [] []    [] []        []      |
+-     bash               |                                                 [] |
+-     bfd                |                                                    |
+-     bibshelf           |                                  []                |
+-     binutils           |                                                    |
+-     bison              |                               [] []                |
+-     bison-runtime      |                                  []                |
+-     bluez-pin          | []                      []       [] []          [] |
+-     cflow              |                               []                   |
+-     clisp              |                               [] []    []          |
+-     console-tools      |                         []       []                |
+-     coreutils          |                []    [] []       []                |
+-     cpio               |                                                    |
+-     cpplib             |                      []       [] []                |
+-     cryptonit          |                                  []                |
+-     dialog             |                                                    |
+-     diffutils          |                      [] []    [] [] []          [] |
+-     doodle             |                                  []                |
+-     e2fsprogs          |                         []       []                |
+-     enscript           |                      []       [] []        []      |
+-     fetchmail          |                      []       [] () []     []      |
+-     findutils          |                []                                  |
+-     findutils_stable   |                []    []       []                   |
+-     flex               |                      []       [] []                |
+-     fslint             |                                                    |
+-     gas                |                                                    |
+-     gawk               |                      []       [] []                |
+-     gcal               |                      []                            |
+-     gcc                |                                  []                |
+-     gettext-examples   | []                   []          [] []          [] |
+-     gettext-runtime    |             []       []       [] []             [] |
+-     gettext-tools      |                      []          []                |
+-     gip                |                []                                  |
+-     gliv               |                []                []                |
+-     glunarclock        |                []                                  |
+-     gmult              | []                               []                |
+-     gnubiff            |                                  ()                |
+-     gnucash            |                      [] []       () ()     []      |
+-     gnuedu             |                                                    |
+-     gnulib             |                []                                  |
+-     gnunet             |                                                    |
+-     gnunet-gtk         |                                                    |
+-     gnutls             |                                  []                |
+-     gpe-aerial         |                         []       []                |
+-     gpe-beam           |                         []       []                |
+-     gpe-calendar       |                                                    |
+-     gpe-clock          |                         []       []                |
+-     gpe-conf           |                         []       []                |
+-     gpe-contacts       |                                                    |
+-     gpe-edit           |                         []                         |
+-     gpe-filemanager    |                                                    |
+-     gpe-go             |                         []                         |
+-     gpe-login          |                         []       []                |
+-     gpe-ownerinfo      |                         []       []                |
+-     gpe-package        |                                                    |
+-     gpe-sketchbook     |                         []       []                |
+-     gpe-su             |                         []       []                |
+-     gpe-taskmanager    |                         []       []                |
+-     gpe-timesheet      |                         []                         |
+-     gpe-today          |                         []       []                |
+-     gpe-todo           |                                                    |
+-     gphoto2            |                         []    [] []        []      |
+-     gprof              |                               [] []                |
+-     gpsdrive           |                                                    |
+-     gramadoir          | []                               []                |
+-     grep               |                         []                      [] |
+-     gretl              |                                  ()                |
+-     gsasl              |                                                    |
+-     gss                |                                                    |
+-     gst-plugins-bad    |                []             []                   |
+-     gst-plugins-base   |                []             []                   |
+-     gst-plugins-good   |                []    []       []                   |
+-     gst-plugins-ugly   |                []             []                   |
+-     gstreamer          | []             []    [] []    [] []        []      |
+-     gtick              |                                  ()                |
+-     gtkam              |             []          []    [] []                |
+-     gtkorphan          |                []                []                |
+-     gtkspell           |             []                   [] []          [] |
+-     gutenprint         |                               []                   |
+-     hello              |                []    []       [] []             [] |
+-     herrie             |                                  []                |
+-     hylafax            |                                                    |
+-     idutils            |                               [] []                |
+-     indent             |                      [] []       []             [] |
+-     iso_15924          |                                                    |
+-     iso_3166           |       []    [] [] [] [] [] [] [] [] []          [] |
+-     iso_3166_2         |                                                    |
+-     iso_4217           |                         []    [] []                |
+-     iso_639            |                         []    [] []             [] |
+-     jpilot             |                         []                         |
+-     jtag               |                                                    |
+-     jwhois             |                                                    |
+-     kbd                |                         []    [] [] []             |
+-     keytouch           |                      []          []                |
+-     keytouch-editor    |                                  []                |
+-     keytouch-keyboa... |                      []                            |
+-     latrine            |                                  ()                |
+-     ld                 |                               []                   |
+-     leafpad            |                []    [] []       [] []             |
+-     libc               |                      [] []    [] []                |
+-     libexif            |                                  []                |
+-     libextractor       |                                  []                |
+-     libgpewidget       |                         []    [] []                |
+-     libgpg-error       |                                  []                |
+-     libgphoto2         |                               [] []                |
+-     libgphoto2_port    |                               [] []                |
+-     libgsasl           |                                                    |
+-     libiconv           |                                  []             [] |
+-     libidn             |                         []    []                [] |
+-     lifelines          |                               [] ()                |
+-     lilypond           |                                  []                |
+-     lingoteach         |                                                    |
+-     lprng              |                                                    |
+-     lynx               |                      [] []    [] []                |
+-     m4                 |                         []    [] [] []             |
+-     mailfromd          |                                                    |
+-     mailutils          |                      []                            |
+-     make               |                               [] []                |
+-     man-db             |                      []       [] []                |
+-     minicom            |                         []    [] []                |
+-     nano               |                []    []          []                |
+-     opcodes            |                                  []                |
+-     parted             |                         []       []                |
+-     pilot-qof          |                                                    |
+-     popt               |                         []    [] []                |
+-     psmisc             |                []                                  |
+-     pwdutils           |                                                    |
+-     qof                |                                                    |
+-     radius             |                      []                            |
+-     recode             |             []       []       [] [] []          [] |
+-     rpm                |                               []                   |
+-     screem             |                                                    |
+-     scrollkeeper       |          [] []       [] [] [] [] []        []      |
+-     sed                |                      []          []             [] |
+-     shared-mime-info   |                []    [] []    [] () []     []   [] |
+-     sharutils          |                []    [] []    [] [] []             |
+-     shishi             |                                                    |
+-     skencil            |                               [] ()                |
+-     solfege            |                                                    |
+-     soundtracker       |                               [] []                |
+-     sp                 |                                  []                |
+-     system-tools-ba... |       []       [] [] [] []    [] [] []     []      |
+-     tar                |                []                []                |
+-     texinfo            |                               [] []             [] |
+-     tin                |                                  ()        ()      |
+-     tuxpaint           | []             []             [] []        []   [] |
+-     unicode-han-tra... |                                                    |
+-     unicode-transla... |                                                    |
+-     util-linux         |                      [] []    [] []                |
+-     util-linux-ng      |                      [] []    [] []                |
+-     vorbis-tools       |                         []                         |
+-     wastesedge         |                                  ()                |
+-     wdiff              |                      []       [] []        []      |
+-     wget               |                      [] []       []                |
+-     xchat              |             [] []    [] []       [] []     []      |
+-     xkeyboard-config   |                []                                  |
+-     xpad               |                []             []           []      |
+-                        +----------------------------------------------------+
+-                          af am ar az be bg bs ca cs cy da de el en en_GB eo
+-                           6  0  2  1  8 26  2 40 48  2 56 88 15  1  15   18
+-
+-                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+-                        +--------------------------------------------------+
+-     Compendium         | []          [] []  []                []          |
+-     a2ps               |    []       [] []                             () |
+-     aegis              |                                                  |
+-     ant-phone          |                []                                |
+-     anubis             |                []                                |
+-     ap-utils           |             [] []                                |
+-     aspell             |                []  []                         [] |
+-     bash               | []                                               |
+-     bfd                | []          []                                   |
+-     bibshelf           | []                 []                         [] |
+-     binutils           | []          [] []                                |
+-     bison              | [] []          []  []                   []    [] |
+-     bison-runtime      |    []          []  []                   []    [] |
+-     bluez-pin          |             [] []  []                [] []       |
+-     cflow              |                    []                            |
+-     clisp              | []             []                                |
+-     console-tools      |                                                  |
+-     coreutils          | [] []       [] []  []                []          |
+-     cpio               | []             []  []                            |
+-     cpplib             | []             []                                |
+-     cryptonit          |                []                                |
+-     dialog             |       []           []                         [] |
+-     diffutils          | []          [] []  [] []    []       [] []    [] |
+-     doodle             |                    []                         [] |
+-     e2fsprogs          | []             []                             [] |
+-     enscript           |                []  []             []             |
+-     fetchmail          | []                                               |
+-     findutils          |    []              []                []          |
+-     findutils_stable   |    []          []  []                []          |
+-     flex               | []             []  []                            |
+-     fslint             |                                                  |
+-     gas                | []             []                                |
+-     gawk               | []             []  []       []                () |
+-     gcal               | []             []                                |
+-     gcc                | []                                               |
+-     gettext-examples   | []          [] []  []                [] []    [] |
+-     gettext-runtime    | []          [] []  []                   []    [] |
+-     gettext-tools      | []    []       []                             [] |
+-     gip                | []    []       []  []                            |
+-     gliv               |                ()                                |
+-     glunarclock        |             []     []                []          |
+-     gmult              |       []       []                             [] |
+-     gnubiff            |                ()                             () |
+-     gnucash            | ()             ()                    ()          |
+-     gnuedu             | []                                               |
+-     gnulib             | [] []              []                            |
+-     gnunet             |                                                  |
+-     gnunet-gtk         |                                                  |
+-     gnutls             |                                                  |
+-     gpe-aerial         | []             []                                |
+-     gpe-beam           | []             []                                |
+-     gpe-calendar       |                                                  |
+-     gpe-clock          | []          [] []                    []          |
+-     gpe-conf           |                []                                |
+-     gpe-contacts       | []             []                                |
+-     gpe-edit           | []             []                    [] []       |
+-     gpe-filemanager    | []                                               |
+-     gpe-go             | []             []                    []          |
+-     gpe-login          | []             []                    []          |
+-     gpe-ownerinfo      | []          [] []                    [] []       |
+-     gpe-package        | []                                               |
+-     gpe-sketchbook     | []             []                                |
+-     gpe-su             | []          [] []                    []          |
+-     gpe-taskmanager    | []          [] []                                |
+-     gpe-timesheet      | []             []  []                   []       |
+-     gpe-today          | []          [] []  []                            |
+-     gpe-todo           | []                                               |
+-     gphoto2            | []          [] []                    []       [] |
+-     gprof              | []          [] []  []                   []       |
+-     gpsdrive           |    []                                            |
+-     gramadoir          |                []  []                            |
+-     grep               | []          []     []                            |
+-     gretl              | []    []       []                             () |
+-     gsasl              |                    []                   []       |
+-     gss                |                []  []                            |
+-     gst-plugins-bad    | []          []                       []       [] |
+-     gst-plugins-base   | []          []                       []       [] |
+-     gst-plugins-good   | []    []    []                       []       [] |
+-     gst-plugins-ugly   | []          []                       []       [] |
+-     gstreamer          |             []                       []       [] |
+-     gtick              |             []     []                         [] |
+-     gtkam              | []             []                    []       [] |
+-     gtkorphan          |                []                             [] |
+-     gtkspell           | []    []    [] []  []                []       [] |
+-     gutenprint         |                                      []          |
+-     hello              | [] [] [] [] [] []  [] []    []    [] [] []    [] |
+-     herrie             |                    []                            |
+-     hylafax            |                                                  |
+-     idutils            |                []  []                [] []    [] |
+-     indent             | [] [] []    [] []  [] []             [] []    [] |
+-     iso_15924          |                []                                |
+-     iso_3166           | [] [] []    [] []     [] [] [] [] [] [] []    [] |
+-     iso_3166_2         |                []                                |
+-     iso_4217           | [] []       [] []                    []       [] |
+-     iso_639            | []       [] [] []  []                []          |
+-     jpilot             | []             []                                |
+-     jtag               |                []                                |
+-     jwhois             | []             []                    [] []    [] |
+-     kbd                | []             []                                |
+-     keytouch           |                []  []                         [] |
+-     keytouch-editor    |                    []                            |
+-     keytouch-keyboa... |                    []                         [] |
+-     latrine            |                    []                         [] |
+-     ld                 | []          [] []  []                            |
+-     leafpad            | []             []  []       []       []       [] |
+-     libc               | []          [] []     []             []          |
+-     libexif            | []                                               |
+-     libextractor       |                    []                            |
+-     libgpewidget       | []             []  []                [] []       |
+-     libgpg-error       |                []                                |
+-     libgphoto2         | []             []                             [] |
+-     libgphoto2_port    |                []                             [] |
+-     libgsasl           |                []  []                            |
+-     libiconv           |    []       []     []                            |
+-     libidn             |                []                             [] |
+-     lifelines          |                ()                                |
+-     lilypond           | []          [] []                                |
+-     lingoteach         |                []                       []    [] |
+-     lprng              |                                                  |
+-     lynx               |    []                                []       [] |
+-     m4                 |                []  [] []                []       |
+-     mailfromd          |                                                  |
+-     mailutils          | []             []                                |
+-     make               | []          [] []  [] []    []    []    []       |
+-     man-db             |                                               [] |
+-     minicom            | []          [] []                    []          |
+-     nano               | []    []       []  [] []             []       [] |
+-     opcodes            | []          [] []  []                            |
+-     parted             |                []                       []    [] |
+-     pilot-qof          |                                                  |
+-     popt               |                []  [] []                   []    |
+-     psmisc             |                                      []       [] |
+-     pwdutils           |                                                  |
+-     qof                |                                         []       |
+-     radius             | []             []                                |
+-     recode             | []             []  [] []    []       [] []    [] |
+-     rpm                |                []                       []       |
+-     screem             |                                                  |
+-     scrollkeeper       | []          []                       []          |
+-     sed                | [] []          []  []                []          |
+-     shared-mime-info   | []    []    [] []                    []       [] |
+-     sharutils          | [] []       [] []  [] []             []       [] |
+-     shishi             |                []                                |
+-     skencil            | []             []                                |
+-     solfege            |                                               [] |
+-     soundtracker       | []             []                             [] |
+-     sp                 |                []                                |
+-     system-tools-ba... | []    []    [] []  []             [] [] []    [] |
+-     tar                |    [] []    []     []                []          |
+-     texinfo            |                []           []       []          |
+-     tin                |    []          ()                                |
+-     tuxpaint           |                    []                []          |
+-     unicode-han-tra... |                                                  |
+-     unicode-transla... |                []  []                            |
+-     util-linux         | [] []       [] []                    [] []    [] |
+-     util-linux-ng      | [] []       [] []                    [] []    [] |
+-     vorbis-tools       |                                                  |
+-     wastesedge         |                ()                                |
+-     wdiff              | [] []          []  [] []             [] []    [] |
+-     wget               |    []       [] []  []             [] [] []    [] |
+-     xchat              | []          [] []        []    []    []       [] |
+-     xkeyboard-config   | []          [] []                    []          |
+-     xpad               | []                 []                []          |
+-                        +--------------------------------------------------+
+-                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+-                          85 22 14  2 48 101 61 12  2  8  2  6 53 29  1 52
+-
+-                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+-                        +--------------------------------------------------+
+-     Compendium         |                                           []     |
+-     a2ps               |       ()                      []          []     |
+-     aegis              |                                           ()     |
+-     ant-phone          |                                           []     |
+-     anubis             |                               []    []    []     |
+-     ap-utils           |                               []                 |
+-     aspell             |                            []             []     |
+-     bash               |                                           []     |
+-     bfd                |                                                  |
+-     bibshelf           |                               []                 |
+-     binutils           |                                                  |
+-     bison              |                               []    []    []     |
+-     bison-runtime      |                               []    []    []     |
+-     bluez-pin          |          []                   []          []     |
+-     cflow              |                                                  |
+-     clisp              |                                           []     |
+-     console-tools      |                                                  |
+-     coreutils          |                                           []     |
+-     cpio               |                                           []     |
+-     cpplib             |                                           []     |
+-     cryptonit          |                                           []     |
+-     dialog             |                               []          []     |
+-     diffutils          | []                            []          []     |
+-     doodle             |                                                  |
+-     e2fsprogs          |                                           []     |
+-     enscript           |                                           []     |
+-     fetchmail          | []                                        []     |
+-     findutils          |                                           []     |
+-     findutils_stable   |                                           []     |
+-     flex               |       []                                  []     |
+-     fslint             |                                                  |
+-     gas                |                                                  |
+-     gawk               | []                                        []     |
+-     gcal               |                                                  |
+-     gcc                |                                                  |
+-     gettext-examples   | []                            []          []     |
+-     gettext-runtime    | []    []                                  []     |
+-     gettext-tools      | []    []                                         |
+-     gip                |                               []          []     |
+-     gliv               |                                           []     |
+-     glunarclock        |                               []          []     |
+-     gmult              | []                            []          []     |
+-     gnubiff            |                                                  |
+-     gnucash            | ()                                  () ()        |
+-     gnuedu             |                                                  |
+-     gnulib             | []                                        []     |
+-     gnunet             |                                                  |
+-     gnunet-gtk         |                                                  |
+-     gnutls             |                               []                 |
+-     gpe-aerial         |                                           []     |
+-     gpe-beam           |                                           []     |
+-     gpe-calendar       | []                                               |
+-     gpe-clock          | []    []                                  []     |
+-     gpe-conf           | []    []                                  []     |
+-     gpe-contacts       |       []                                         |
+-     gpe-edit           | []    []                                  []     |
+-     gpe-filemanager    | []    []                                         |
+-     gpe-go             | []    []                                  []     |
+-     gpe-login          | []    []                                  []     |
+-     gpe-ownerinfo      | []                                        []     |
+-     gpe-package        | []    []                                         |
+-     gpe-sketchbook     |       []                                  []     |
+-     gpe-su             | []    []                                  []     |
+-     gpe-taskmanager    | []    [] []                               []     |
+-     gpe-timesheet      |                                           []     |
+-     gpe-today          | []                                        []     |
+-     gpe-todo           | []                                               |
+-     gphoto2            | []                                        []     |
+-     gprof              |                               []                 |
+-     gpsdrive           |                                           []     |
+-     gramadoir          |                                           ()     |
+-     grep               |             []                            []     |
+-     gretl              |                                                  |
+-     gsasl              |                                           []     |
+-     gss                |                                                  |
+-     gst-plugins-bad    |                                           []     |
+-     gst-plugins-base   |                                           []     |
+-     gst-plugins-good   |                                           []     |
+-     gst-plugins-ugly   |                                           []     |
+-     gstreamer          |                                           []     |
+-     gtick              |                                           []     |
+-     gtkam              | []                                        []     |
+-     gtkorphan          |                                           []     |
+-     gtkspell           |                            []             []     |
+-     gutenprint         |                                           []     |
+-     hello              | [] [] []                      []    []    []  [] |
+-     herrie             |                                           []     |
+-     hylafax            |                                                  |
+-     idutils            |                                           []     |
+-     indent             | []                                        []     |
+-     iso_15924          |                                           []     |
+-     iso_3166           | []    [] []       []    []          []    []  [] |
+-     iso_3166_2         |                                           []     |
+-     iso_4217           | []                []                      []     |
+-     iso_639            | []                []                      []  [] |
+-     jpilot             | ()                                        ()     |
+-     jtag               |                                                  |
+-     jwhois             |                                           []     |
+-     kbd                |                                           []     |
+-     keytouch           |                                           []     |
+-     keytouch-editor    |                                           []     |
+-     keytouch-keyboa... |                                                  |
+-     latrine            |                                           []     |
+-     ld                 |                                                  |
+-     leafpad            | []                []                             |
+-     libc               | []    []                                  []     |
+-     libexif            |                                                  |
+-     libextractor       |                                                  |
+-     libgpewidget       |                                           []     |
+-     libgpg-error       |                                                  |
+-     libgphoto2         | []                                               |
+-     libgphoto2_port    | []                                               |
+-     libgsasl           |                                           []     |
+-     libiconv           |                                           []     |
+-     libidn             | []                                        []     |
+-     lifelines          |                                           []     |
+-     lilypond           |                                           []     |
+-     lingoteach         |                                           []     |
+-     lprng              |                                                  |
+-     lynx               | []                                        []     |
+-     m4                 | []                                        []     |
+-     mailfromd          |                                                  |
+-     mailutils          |                                                  |
+-     make               | []    []                                  []     |
+-     man-db             |                                                  |
+-     minicom            | []                                               |
+-     nano               |                               []    []    []     |
+-     opcodes            |                                           []     |
+-     parted             | []                                        []     |
+-     pilot-qof          |                                                  |
+-     popt               | []    []                                  []     |
+-     psmisc             | []                                  []    []     |
+-     pwdutils           |                                                  |
+-     qof                |                                                  |
+-     radius             |                                                  |
+-     recode             |                                           []     |
+-     rpm                | []    []                                         |
+-     screem             | []                                               |
+-     scrollkeeper       |                                     [] [] []  [] |
+-     sed                | []                                        []     |
+-     shared-mime-info   | []    []          []          []    []    []  [] |
+-     sharutils          | []                                        []     |
+-     shishi             |                                                  |
+-     skencil            |                                                  |
+-     solfege            |                                     ()        () |
+-     soundtracker       |                                                  |
+-     sp                 | ()                                               |
+-     system-tools-ba... | []    []          []                      []     |
+-     tar                | []          []                            []     |
+-     texinfo            |                                     []    []     |
+-     tin                |                                                  |
+-     tuxpaint           |                                     ()    []  [] |
+-     unicode-han-tra... |                                                  |
+-     unicode-transla... |                                                  |
+-     util-linux         | []                                        []     |
+-     util-linux-ng      | []                                        []     |
+-     vorbis-tools       |                                                  |
+-     wastesedge         |                                           []     |
+-     wdiff              |                               []    []           |
+-     wget               | []                                        []     |
+-     xchat              | []    []                []                []     |
+-     xkeyboard-config   |    [] []                                  []     |
+-     xpad               |       []                      []          []     |
+-                        +--------------------------------------------------+
+-                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+-                          51  2 25  3  2  0  6  0  2  2 20  0 11  1 103  6
+-
+-                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+-                        +--------------------------------------------------+
+-     Compendium         |          []  []      []       []          []     |
+-     a2ps               |       ()     []      [] []       []    [] []     |
+-     aegis              |                      () ()                       |
+-     ant-phone          |                      []                   []     |
+-     anubis             |       []             [] []                       |
+-     ap-utils           |       ()                                         |
+-     aspell             |                      [] []    []                 |
+-     bash               |       []                      []                 |
+-     bfd                |                                                  |
+-     bibshelf           |                                           []     |
+-     binutils           |                         []    []                 |
+-     bison              |       []     []      [] []                []     |
+-     bison-runtime      |       []     []      []          []       []     |
+-     bluez-pin          |       []     []   [] [] []    [] []    [] []     |
+-     cflow              |       []                                         |
+-     clisp              |                         []                       |
+-     console-tools      |                         []                       |
+-     coreutils          |       []                []       []       []     |
+-     cpio               |       []                []                []     |
+-     cpplib             |                                           []     |
+-     cryptonit          |              []                           []     |
+-     dialog             |                                           []     |
+-     diffutils          |       []     []      [] []             [] []     |
+-     doodle             |                                     []    []     |
+-     e2fsprogs          |       []                                  []     |
+-     enscript           |              []      [] []       []       []     |
+-     fetchmail          |       []                []          []           |
+-     findutils          |       [] []                               []     |
+-     findutils_stable   |       [] []          []       [] []       []     |
+-     flex               |       []     []      [] []                []     |
+-     fslint             |                                           []     |
+-     gas                |                                                  |
+-     gawk               |       []     []      []                   []     |
+-     gcal               |                                           []     |
+-     gcc                |                                        [] []     |
+-     gettext-examples   |       [] []          [] []    [] []    [] []     |
+-     gettext-runtime    |       [] []          [] []    [] []    [] []     |
+-     gettext-tools      |       []             [] []    [] []    [] []     |
+-     gip                |                   []          []       [] []     |
+-     gliv               |       []     []      [] []    []          []     |
+-     glunarclock        |              []      [] []    []       [] []     |
+-     gmult              |                   [] []                [] []     |
+-     gnubiff            |                      ()                   []     |
+-     gnucash            |       ()                                  []     |
+-     gnuedu             |                                                  |
+-     gnulib             |       []                         []       []     |
+-     gnunet             |                                                  |
+-     gnunet-gtk         |                                           []     |
+-     gnutls             |       []                                  []     |
+-     gpe-aerial         |          []  []      [] []       []    [] []     |
+-     gpe-beam           |          []  []      [] []       []    [] []     |
+-     gpe-calendar       |                         []       []    [] []     |
+-     gpe-clock          |          []  []      [] []    [] []    [] []     |
+-     gpe-conf           |          []  []      [] []    [] []       []     |
+-     gpe-contacts       |                      [] []       []    [] []     |
+-     gpe-edit           |       [] []  []      [] []    [] []    [] []     |
+-     gpe-filemanager    |                                  []       []     |
+-     gpe-go             |       []     []      [] []    [] []    [] []     |
+-     gpe-login          |          []  []      [] []    [] []    [] []     |
+-     gpe-ownerinfo      |          []  []      [] []    [] []    [] []     |
+-     gpe-package        |                                  []       []     |
+-     gpe-sketchbook     |          []  []      [] []    [] []    [] []     |
+-     gpe-su             |          []  []      [] []    [] []    [] []     |
+-     gpe-taskmanager    |          []  []      [] []    [] []    [] []     |
+-     gpe-timesheet      |          []  []      [] []    [] []    [] []     |
+-     gpe-today          |          []  []      [] []    [] []    [] []     |
+-     gpe-todo           |                         []       []    [] []     |
+-     gphoto2            |    [] []             []       []       [] []     |
+-     gprof              |              []      []                   []     |
+-     gpsdrive           |                         []                []     |
+-     gramadoir          |                               []          []     |
+-     grep               |       []                      [] []       []     |
+-     gretl              |       [] []  []                                  |
+-     gsasl              |       []                               [] []     |
+-     gss                |       []             []       []          []     |
+-     gst-plugins-bad    |       []     []                           []     |
+-     gst-plugins-base   |       []                                  []     |
+-     gst-plugins-good   |       []                                  []     |
+-     gst-plugins-ugly   |       []     []                           []     |
+-     gstreamer          |       []                            [] [] []     |
+-     gtick              |                         []                       |
+-     gtkam              |    [] []     []         []                []     |
+-     gtkorphan          |                                           []     |
+-     gtkspell           |              []   [] [] []    [] []    [] []     |
+-     gutenprint         |                                           []     |
+-     hello              |       []     []      [] []    [] []    [] []     |
+-     herrie             |       []                []                []     |
+-     hylafax            |                                                  |
+-     idutils            |       []     []      [] []                []     |
+-     indent             |       []     []      [] []    []       [] []     |
+-     iso_15924          |                                                  |
+-     iso_3166           |    [] [] []  []      [] [] [] [] [] [] [] []  [] |
+-     iso_3166_2         |                                                  |
+-     iso_4217           |       [] []             [] []    []    [] []     |
+-     iso_639            |       []                [] [] [] []    [] []     |
+-     jpilot             |                                                  |
+-     jtag               |                               []                 |
+-     jwhois             |       []     []      []                   []     |
+-     kbd                |       []             []                   []     |
+-     keytouch           |                                           []     |
+-     keytouch-editor    |                                           []     |
+-     keytouch-keyboa... |                                           []     |
+-     latrine            |                                                  |
+-     ld                 |                                           []     |
+-     leafpad            |       [] []             []    []          []  [] |
+-     libc               |       []                []    []          []     |
+-     libexif            |       []                      []                 |
+-     libextractor       |                      []                   []     |
+-     libgpewidget       |       [] []  []      []       [] []    [] []     |
+-     libgpg-error       |       []             []                   []     |
+-     libgphoto2         |       []                                         |
+-     libgphoto2_port    |       []                []                []     |
+-     libgsasl           |       []             []                [] []     |
+-     libiconv           |                                  []    [] []     |
+-     libidn             |       []                               [] ()     |
+-     lifelines          |       []                                  []     |
+-     lilypond           |                                                  |
+-     lingoteach         |              []                                  |
+-     lprng              |       []                                         |
+-     lynx               |              []         []                []     |
+-     m4                 |       []     []      [] []                []     |
+-     mailfromd          |       []                                         |
+-     mailutils          |       []                []                []     |
+-     make               |       []     []         []                []     |
+-     man-db             |       []             [] []                []     |
+-     minicom            |       []     []      [] []                []     |
+-     nano               |              []      [] []                []     |
+-     opcodes            |                      []                   []     |
+-     parted             |       []                                         |
+-     pilot-qof          |                                                  |
+-     popt               |       [] []             []                []     |
+-     psmisc             |       []                                  []     |
+-     pwdutils           |       []                                  []     |
+-     qof                |              []                           []     |
+-     radius             |       []                []                       |
+-     recode             |       [] []  []      [] []       []       []     |
+-     rpm                |       [] []             []                []     |
+-     screem             |                                                  |
+-     scrollkeeper       |       []             [] []    []    [] [] []     |
+-     sed                |       [] []  []      [] []    [] []    [] []     |
+-     shared-mime-info   |       [] []  []                     [] [] []     |
+-     sharutils          |       []                []             [] []     |
+-     shishi             |       []                                         |
+-     skencil            |          []  []                           []     |
+-     solfege            |              []                                  |
+-     soundtracker       |                               []          []     |
+-     sp                 |                                                  |
+-     system-tools-ba... |    [] [] []  []      []             [] [] []  [] |
+-     tar                |       []                []       []       []     |
+-     texinfo            |       []             [] []                []     |
+-     tin                |                         ()                       |
+-     tuxpaint           |       [] []                      [] [] [] []     |
+-     unicode-han-tra... |                                                  |
+-     unicode-transla... |                                                  |
+-     util-linux         |              []         []       []       []     |
+-     util-linux-ng      |              []         []       []       []     |
+-     vorbis-tools       |                         []                       |
+-     wastesedge         |                                                  |
+-     wdiff              |       []     []      [] []    [] []       []     |
+-     wget               |          []             []    []          []     |
+-     xchat              |    []                   []    [] [] [] [] []     |
+-     xkeyboard-config   |                               [] []       []     |
+-     xpad               |                               [] []       []     |
+-                        +--------------------------------------------------+
+-                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+-                           0  5 77 31  53    4 58 72  3 45 46  9 45 122  3
+-
+-                          tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+-                        +---------------------------------------------------+
+-     Compendium         |          []        []         []          []      | 19
+-     a2ps               |          [] []     []                             | 19
+-     aegis              |                    []                             |  1
+-     ant-phone          |          []        []                             |  6
+-     anubis             |          [] []     []                             | 11
+-     ap-utils           |             ()     []                             |  4
+-     aspell             |             []     []  []                         | 16
+-     bash               |          []                                       |  6
+-     bfd                |                                                   |  2
+-     bibshelf           |                    []                             |  7
+-     binutils           |          [] []     []                     []      |  9
+-     bison              |          [] []     []                     []      | 20
+-     bison-runtime      |             []     []         []          []      | 18
+-     bluez-pin          |          [] []     []  []     []          []      | 28
+-     cflow              |             []     []                             |  5
+-     clisp              |                                                   |  9
+-     console-tools      |          []        []                             |  5
+-     coreutils          |          [] []     []                             | 18
+-     cpio               |          [] []     []         []                  | 11
+-     cpplib             |          [] []     []         []          []      | 12
+-     cryptonit          |                    []                             |  6
+-     dialog             |                    []  []     []                  |  9
+-     diffutils          |          [] []     []         []          []      | 29
+-     doodle             |                    []                             |  6
+-     e2fsprogs          |          []        []                             | 10
+-     enscript           |          [] []     []                             | 16
+-     fetchmail          |          []        []                             | 12
+-     findutils          |          [] []     []                             | 11
+-     findutils_stable   |          [] []     []                     []      | 18
+-     flex               |          []        []                             | 15
+-     fslint             |                    []                             |  2
+-     gas                |          []                                       |  3
+-     gawk               |          []        []         []                  | 16
+-     gcal               |          []                                       |  5
+-     gcc                |          []                   []          []      |  7
+-     gettext-examples   |          [] []     []         []    []    []      | 29
+-     gettext-runtime    |          [] []     []         []    []    []      | 28
+-     gettext-tools      |          [] []     []         []          []      | 20
+-     gip                |                    []                     []      | 13
+-     gliv               |          []        []                             | 11
+-     glunarclock        |                    []  []                 []      | 15
+-     gmult              |          []        []         []          []      | 16
+-     gnubiff            |                    []                             |  2
+-     gnucash            |          () []                                    |  5
+-     gnuedu             |                    []                             |  2
+-     gnulib             |                    []                             | 10
+-     gnunet             |                                                   |  0
+-     gnunet-gtk         |          []        []                             |  3
+-     gnutls             |                                                   |  4
+-     gpe-aerial         |                    []         []                  | 14
+-     gpe-beam           |                    []         []                  | 14
+-     gpe-calendar       |                    []  []                         |  7
+-     gpe-clock          |          []        []  []     []                  | 21
+-     gpe-conf           |                    []  []     []                  | 16
+-     gpe-contacts       |                    []         []                  | 10
+-     gpe-edit           |          []        []  []     []          []      | 22
+-     gpe-filemanager    |                    []  []                         |  7
+-     gpe-go             |          []        []  []     []                  | 19
+-     gpe-login          |          []        []  []     []          []      | 21
+-     gpe-ownerinfo      |          []        []         []          []      | 21
+-     gpe-package        |                    []                             |  6
+-     gpe-sketchbook     |          []        []                             | 16
+-     gpe-su             |          []        []  []     []                  | 21
+-     gpe-taskmanager    |          []        []  []     []                  | 21
+-     gpe-timesheet      |          []        []         []          []      | 18
+-     gpe-today          |          []        []  []     []          []      | 21
+-     gpe-todo           |                    []  []                         |  8
+-     gphoto2            |             []     []         []          []      | 21
+-     gprof              |          []        []                             | 13
+-     gpsdrive           |                    []                             |  5
+-     gramadoir          |                    []                             |  7
+-     grep               |                    []                             | 12
+-     gretl              |                                                   |  6
+-     gsasl              |                    []         []          []      |  9
+-     gss                |                    []                             |  7
+-     gst-plugins-bad    |             []     []         []                  | 13
+-     gst-plugins-base   |             []     []                             | 11
+-     gst-plugins-good   |             []     []         []    []    []      | 16
+-     gst-plugins-ugly   |             []     []         []                  | 13
+-     gstreamer          |          [] []     []                             | 18
+-     gtick              |             []     []                             |  7
+-     gtkam              |                    []                             | 16
+-     gtkorphan          |                    []                             |  7
+-     gtkspell           |             []     []  []     []    []    []      | 27
+-     gutenprint         |                                                   |  4
+-     hello              |          [] []     []         []          []      | 38
+-     herrie             |          []        []                             |  8
+-     hylafax            |                                                   |  0
+-     idutils            |          []        []                             | 15
+-     indent             |          [] []     []         []          []      | 28
+-     iso_15924          |                    []         []                  |  4
+-     iso_3166           |    [] [] [] []     []  []     []    []    []      | 54
+-     iso_3166_2         |                    []         []                  |  4
+-     iso_4217           |    []    []        []         []    []            | 24
+-     iso_639            |             []     []  []     []    []            | 26
+-     jpilot             |          [] []     []         []                  |  7
+-     jtag               |                    []                             |  3
+-     jwhois             |          []        []                     []      | 13
+-     kbd                |          [] []     []                             | 13
+-     keytouch           |                    []                             |  8
+-     keytouch-editor    |                    []                             |  5
+-     keytouch-keyboa... |                    []                             |  5
+-     latrine            |          []        []                             |  5
+-     ld                 |          []        []         []          []      | 10
+-     leafpad            |          [] []     []         []          []      | 24
+-     libc               |          []                   []          []      | 19
+-     libexif            |                    []                             |  5
+-     libextractor       |                    []                             |  5
+-     libgpewidget       |                    []  []     []                  | 20
+-     libgpg-error       |                    []                             |  6
+-     libgphoto2         |             []     []                             |  9
+-     libgphoto2_port    |             []     []                     []      | 11
+-     libgsasl           |                    []                             |  8
+-     libiconv           |                    []  []                         | 11
+-     libidn             |                    []         []                  | 11
+-     lifelines          |                                                   |  4
+-     lilypond           |                    []                             |  6
+-     lingoteach         |                    []                             |  6
+-     lprng              |                    []                             |  2
+-     lynx               |          [] []     []                             | 15
+-     m4                 |                    []         []          []      | 18
+-     mailfromd          |             []     []                             |  3
+-     mailutils          |             []     []                             |  8
+-     make               |          []        []         []                  | 20
+-     man-db             |                    []                             |  9
+-     minicom            |                    []                             | 14
+-     nano               |                    []         []          []      | 20
+-     opcodes            |          []        []                             | 10
+-     parted             |          [] []                            []      | 11
+-     pilot-qof          |                    []                             |  1
+-     popt               |          []        []         []          []      | 18
+-     psmisc             |                    []         []                  | 10
+-     pwdutils           |                    []                             |  3
+-     qof                |                    []                             |  4
+-     radius             |             []     []                             |  7
+-     recode             |          []        []         []                  | 25
+-     rpm                |          [] []     []                     []      | 13
+-     screem             |                    []                             |  2
+-     scrollkeeper       |          [] []     []                     []      | 26
+-     sed                |          []        []         []          []      | 23
+-     shared-mime-info   |             []     []         []                  | 29
+-     sharutils          |          []        []                     []      | 23
+-     shishi             |                    []                             |  3
+-     skencil            |                    []                             |  7
+-     solfege            |                    []                             |  3
+-     soundtracker       |          []        []                             |  9
+-     sp                 |          []                                       |  3
+-     system-tools-ba... |    []    [] []     []     []  []          []      | 38
+-     tar                |          [] []     []                             | 17
+-     texinfo            |          []        []         []                  | 15
+-     tin                |                                                   |  1
+-     tuxpaint           |                    []  []                 []      | 19
+-     unicode-han-tra... |                                                   |  0
+-     unicode-transla... |                                                   |  2
+-     util-linux         |          [] []     []                             | 20
+-     util-linux-ng      |          [] []     []                             | 20
+-     vorbis-tools       |             []     []                             |  4
+-     wastesedge         |                                                   |  1
+-     wdiff              |          []        []                             | 23
+-     wget               |          []        []                     []      | 20
+-     xchat              |             []     []         []          []      | 29
+-     xkeyboard-config   |          [] []     []                             | 14
+-     xpad               |                    []         []          []      | 15
+-                        +---------------------------------------------------+
+-       76 teams           tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+-      163 domains          0  3  1 74 51  0  143 21  1  57     7    45    0  2036
+-
+-   Some counters in the preceding matrix are higher than the number of
+-visible blocks let us expect.  This is because a few extra PO files are
+-used for implementing regional variants of languages, or language
+-dialects.
+-
+-   For a PO file in the matrix above to be effective, the package to
+-which it applies should also have been internationalized and
+-distributed as such by its maintainer.  There might be an observable
+-lag between the mere existence a PO file and its wide availability in a
+-distribution.
+-
+-   If November 2007 seems to be old, you may fetch a more recent copy
+-of this `ABOUT-NLS' file on most GNU archive sites.  The most
+-up-to-date matrix with full percentage details can be found at
+-`http://translationproject.org/extra/matrix.html'.
+-
+-1.6 Using `gettext' in new packages
+-===================================
+-
+-If you are writing a freely available program and want to
+-internationalize it you are welcome to use GNU `gettext' in your
+-package.  Of course you have to respect the GNU Library General Public
+-License which covers the use of the GNU `gettext' library.  This means
+-in particular that even non-free programs can use `libintl' as a shared
+-library, whereas only free software can use `libintl' as a static
+-library or use modified versions of `libintl'.
+-
+-   Once the sources are changed appropriately and the setup can handle
+-the use of `gettext' the only thing missing are the translations.  The
+-Free Translation Project is also available for packages which are not
+-developed inside the GNU project.  Therefore the information given above
+-applies also for every other Free Software Project.  Contact
+-`coordinator@translationproject.org' to make the `.pot' files available
+-to the translation teams.
+-
++<https://www.gnu.org/software/gettext/manual/html_node/Users.html>
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2019-12-07  gettextize  <bug-gnu-gettext@gnu.org>
++
++	* m4/intlmacosx.m4: Upgrade to gettext-0.20.1.
++	* Makefile.am (SUBDIRS): Remove intl.
++	* configure.ac (AC_CONFIG_FILES): Remove intl/Makefile.
++	(AM_GNU_GETTEXT_VERSION): Bump to 0.20.
++
+ 2013-03-13  Steve Langasek  <steve.langasek@ubuntu.com>
+ 
+ 	* nih/watch.c (nih_watch_walk_filter): New NihFileFilter function
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,6 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+ 
+-SUBDIRS = m4 intl nih nih-dbus nih-dbus-tool po
++SUBDIRS = m4 nih nih-dbus nih-dbus-tool po
+ 
+ EXTRA_DIST = HACKING
+ 
+--- a/configure.ac
++++ b/configure.ac
+@@ -15,8 +15,8 @@ AM_MAINTAINER_MODE([enable])
+ LT_PREREQ(2.2.4)
+ LT_INIT
+ 
+-AM_GNU_GETTEXT_VERSION([0.17])
+-AM_GNU_GETTEXT()
++AM_GNU_GETTEXT_VERSION([0.20])
++AM_GNU_GETTEXT([external])
+ 
+ # Checks for programs.
+ AC_PROG_CC
+@@ -58,7 +58,7 @@ AS_IF([test "$cross_compiling" = "yes"],
+ 	      AC_SUBST([NIH_DBUS_TOOL], ["\${top_builddir}/nih-dbus-tool/nih-dbus-tool"])])],
+       [AC_SUBST([NIH_DBUS_TOOL], ["\${top_builddir}/nih-dbus-tool/nih-dbus-tool"])])
+ 
+-AC_CONFIG_FILES([ Makefile m4/Makefile intl/Makefile
++AC_CONFIG_FILES([ Makefile m4/Makefile
+ 		  nih/Makefile nih/libnih.pc
+ 		  nih-dbus/Makefile nih-dbus/libnih-dbus.pc
+ 		  nih-dbus-tool/Makefile
+--- a/intl/ChangeLog
++++ /dev/null
+@@ -1,4 +0,0 @@
+-2007-11-07  GNU  <bug-gnu-gettext@gnu.org>
+-
+-	* Version 0.17 released.
+-
+--- a/intl/Makefile.in
++++ /dev/null
+@@ -1,587 +0,0 @@
+-# Makefile for directory with message catalog handling library of GNU gettext
+-# Copyright (C) 1995-1998, 2000-2007 Free Software Foundation, Inc.
+-#
+-# This program 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, 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
+-# Library General Public License for more details.
+-#
+-# You should have received a copy of the GNU Library 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.
+-
+-PACKAGE = @PACKAGE@
+-VERSION = @VERSION@
+-
+-SHELL = /bin/sh
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-top_builddir = ..
+-
+-# The VPATH variables allows builds with $builddir != $srcdir, assuming a
+-# 'make' program that supports VPATH (such as GNU make). This line is removed
+-# by autoconf automatically when "$(srcdir)" = ".".
+-# In this directory, the VPATH handling is particular:
+-# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool),
+-#    the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted.
+-# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise
+-#    'make' does the wrong thing if GNU gettext was configured with
+-#    "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la
+-#    files it finds in srcdir = ../../gettext-runtime/intl.
+-VPATH = $(srcdir)
+-
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-transform = @program_transform_name@
+-libdir = @libdir@
+-includedir = @includedir@
+-datarootdir = @datarootdir@
+-datadir = @datadir@
+-localedir = $(datadir)/locale
+-gettextsrcdir = $(datadir)/gettext/intl
+-aliaspath = $(localedir)
+-subdir = intl
+-
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-
+-# We use $(mkdir_p).
+-# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+-# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+-# @install_sh@ does not start with $(SHELL), so we add it.
+-# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+-# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+-# versions, $(mkinstalldirs) and $(install_sh) are unused.
+-mkinstalldirs = $(SHELL) @install_sh@ -d
+-install_sh = $(SHELL) @install_sh@
+-MKDIR_P = @MKDIR_P@
+-mkdir_p = @mkdir_p@
+-
+-l = @INTL_LIBTOOL_SUFFIX_PREFIX@
+-
+-AR = ar
+-CC = @CC@
+-LIBTOOL = @LIBTOOL@
+-RANLIB = @RANLIB@
+-YACC = @INTLBISON@ -y -d
+-YFLAGS = --name-prefix=__gettext
+-WINDRES = @WINDRES@
+-
+-# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro.
+-# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro.
+-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
+--DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \
+--DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
+--Dset_relocation_prefix=libintl_set_relocation_prefix \
+--Drelocate=libintl_relocate \
+--DDEPENDS_ON_LIBICONV=1 @DEFS@
+-CPPFLAGS = @CPPFLAGS@
+-CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@
+-LDFLAGS = @LDFLAGS@ $(LDFLAGS_@WOE32DLL@)
+-LDFLAGS_yes = -Wl,--export-all-symbols
+-LDFLAGS_no =
+-LIBS = @LIBS@
+-
+-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+-
+-HEADERS = \
+-  gmo.h \
+-  gettextP.h \
+-  hash-string.h \
+-  loadinfo.h \
+-  plural-exp.h \
+-  eval-plural.h \
+-  localcharset.h \
+-  lock.h \
+-  relocatable.h \
+-  tsearch.h tsearch.c \
+-  xsize.h \
+-  printf-args.h printf-args.c \
+-  printf-parse.h wprintf-parse.h printf-parse.c \
+-  vasnprintf.h vasnwprintf.h vasnprintf.c \
+-  os2compat.h \
+-  libgnuintl.h.in
+-SOURCES = \
+-  bindtextdom.c \
+-  dcgettext.c \
+-  dgettext.c \
+-  gettext.c \
+-  finddomain.c \
+-  hash-string.c \
+-  loadmsgcat.c \
+-  localealias.c \
+-  textdomain.c \
+-  l10nflist.c \
+-  explodename.c \
+-  dcigettext.c \
+-  dcngettext.c \
+-  dngettext.c \
+-  ngettext.c \
+-  plural.y \
+-  plural-exp.c \
+-  localcharset.c \
+-  lock.c \
+-  relocatable.c \
+-  langprefs.c \
+-  localename.c \
+-  log.c \
+-  printf.c \
+-  version.c \
+-  osdep.c \
+-  os2compat.c \
+-  intl-exports.c \
+-  intl-compat.c
+-OBJECTS = \
+-  bindtextdom.$lo \
+-  dcgettext.$lo \
+-  dgettext.$lo \
+-  gettext.$lo \
+-  finddomain.$lo \
+-  hash-string.$lo \
+-  loadmsgcat.$lo \
+-  localealias.$lo \
+-  textdomain.$lo \
+-  l10nflist.$lo \
+-  explodename.$lo \
+-  dcigettext.$lo \
+-  dcngettext.$lo \
+-  dngettext.$lo \
+-  ngettext.$lo \
+-  plural.$lo \
+-  plural-exp.$lo \
+-  localcharset.$lo \
+-  lock.$lo \
+-  relocatable.$lo \
+-  langprefs.$lo \
+-  localename.$lo \
+-  log.$lo \
+-  printf.$lo \
+-  version.$lo \
+-  osdep.$lo \
+-  intl-compat.$lo
+-OBJECTS_RES_yes = libintl.res
+-OBJECTS_RES_no =
+-DISTFILES.common = Makefile.in \
+-config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \
+-$(HEADERS) $(SOURCES)
+-DISTFILES.generated = plural.c
+-DISTFILES.normal = VERSION
+-DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32
+-DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
+-COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \
+-libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \
+-libgnuintl.h.msvc-shared Makefile.msvc
+-
+-all: all-@USE_INCLUDED_LIBINTL@
+-all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
+-all-no: all-no-@BUILD_INCLUDED_LIBINTL@
+-all-no-yes: libgnuintl.$la
+-all-no-no:
+-
+-libintl.a libgnuintl.a: $(OBJECTS)
+-	rm -f $@
+-	$(AR) cru $@ $(OBJECTS)
+-	$(RANLIB) $@
+-
+-libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_@WOE32@)
+-	$(LIBTOOL) --mode=link \
+-	  $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
+-	  $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) @LTLIBTHREAD@ @LTLIBC@ \
+-	  $(OBJECTS_RES_@WOE32@) \
+-	  -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
+-	  -rpath $(libdir) \
+-	  -no-undefined
+-
+-# Libtool's library version information for libintl.
+-# Before making a gettext release, the gettext maintainer must change this
+-# according to the libtool documentation, section "Library interface versions".
+-# Maintainers of other packages that include the intl directory must *not*
+-# change these values.
+-LTV_CURRENT=8
+-LTV_REVISION=2
+-LTV_AGE=0
+-
+-.SUFFIXES:
+-.SUFFIXES: .c .y .o .lo .sin .sed
+-
+-.c.o:
+-	$(COMPILE) $<
+-
+-.y.c:
+-	$(YACC) $(YFLAGS) --output $@ $<
+-	rm -f $*.h
+-
+-bindtextdom.lo: $(srcdir)/bindtextdom.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
+-dcgettext.lo: $(srcdir)/dcgettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
+-dgettext.lo: $(srcdir)/dgettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
+-gettext.lo: $(srcdir)/gettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
+-finddomain.lo: $(srcdir)/finddomain.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
+-hash-string.lo: $(srcdir)/hash-string.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/hash-string.c
+-loadmsgcat.lo: $(srcdir)/loadmsgcat.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
+-localealias.lo: $(srcdir)/localealias.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
+-textdomain.lo: $(srcdir)/textdomain.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
+-l10nflist.lo: $(srcdir)/l10nflist.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
+-explodename.lo: $(srcdir)/explodename.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
+-dcigettext.lo: $(srcdir)/dcigettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
+-dcngettext.lo: $(srcdir)/dcngettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
+-dngettext.lo: $(srcdir)/dngettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
+-ngettext.lo: $(srcdir)/ngettext.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
+-plural.lo: $(srcdir)/plural.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
+-plural-exp.lo: $(srcdir)/plural-exp.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
+-localcharset.lo: $(srcdir)/localcharset.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
+-lock.lo: $(srcdir)/lock.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/lock.c
+-relocatable.lo: $(srcdir)/relocatable.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
+-langprefs.lo: $(srcdir)/langprefs.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c
+-localename.lo: $(srcdir)/localename.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
+-log.lo: $(srcdir)/log.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
+-printf.lo: $(srcdir)/printf.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
+-version.lo: $(srcdir)/version.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/version.c
+-osdep.lo: $(srcdir)/osdep.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
+-intl-compat.lo: $(srcdir)/intl-compat.c
+-	$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
+-
+-# This rule is executed only on Woe32 systems.
+-# The following sed expressions come from the windres-options script. They are
+-# inlined here, so that they can be written in a Makefile without requiring a
+-# temporary file. They must contain literal newlines rather than semicolons,
+-# so that they work with the sed-3.02 that is shipped with MSYS. We can use
+-# GNU bash's $'\n' syntax to obtain such a newline.
+-libintl.res: $(srcdir)/libintl.rc
+-	nl=$$'\n'; \
+-	sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \
+-	sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \
+-	sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \
+-	$(WINDRES) \
+-	  "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \
+-	  "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \
+-	  "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \
+-	  "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \
+-	  -i $(srcdir)/libintl.rc -o libintl.res --output-format=coff
+-
+-ref-add.sed: $(srcdir)/ref-add.sin
+-	sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
+-	mv t-ref-add.sed ref-add.sed
+-ref-del.sed: $(srcdir)/ref-del.sin
+-	sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
+-	mv t-ref-del.sed ref-del.sed
+-
+-INCLUDES = -I. -I$(srcdir) -I..
+-
+-libgnuintl.h: $(srcdir)/libgnuintl.h.in
+-	sed -e '/IN_LIBGLOCALE/d' \
+-	    -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+-	    -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
+-	    -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
+-	    -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
+-	  < $(srcdir)/libgnuintl.h.in \
+-	| if test '@WOE32DLL@' = yes; then \
+-	    sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \
+-	  else \
+-	    cat; \
+-	  fi \
+-	| sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \
+-	      -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \
+-	| sed -e 's,@''HAVE_VISIBILITY''@,@HAVE_VISIBILITY@,g' \
+-	  > libgnuintl.h
+-
+-libintl.h: $(srcdir)/libgnuintl.h.in
+-	sed -e '/IN_LIBGLOCALE/d' \
+-	    -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+-	    -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
+-	    -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
+-	    -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
+-	  < $(srcdir)/libgnuintl.h.in > libintl.h
+-
+-charset.alias: $(srcdir)/config.charset
+-	$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
+-	mv t-$@ $@
+-
+-check: all
+-
+-# We must not install the libintl.h/libintl.a files if we are on a
+-# system which has the GNU gettext() function in its C library or in a
+-# separate library.
+-# If you want to use the one which comes with this version of the
+-# package, you have to use `configure --with-included-gettext'.
+-install: install-exec install-data
+-install-exec: all
+-	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+-	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+-	  $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
+-	  $(LIBTOOL) --mode=install \
+-	    $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
+-	  if test "@RELOCATABLE@" = yes; then \
+-	    dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
+-	    if test -n "$$dependencies"; then \
+-	      rm -f $(DESTDIR)$(libdir)/libintl.la; \
+-	    fi; \
+-	  fi; \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools" \
+-	   && test '@USE_INCLUDED_LIBINTL@' = no \
+-	   && test @GLIBC2@ != no; then \
+-	  $(mkdir_p) $(DESTDIR)$(libdir); \
+-	  $(LIBTOOL) --mode=install \
+-	    $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
+-	  rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+-	  $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+-	  $(LIBTOOL) --mode=uninstall \
+-	    rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
+-	else \
+-	  : ; \
+-	fi
+-	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \
+-	  temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+-	  dest=$(DESTDIR)$(libdir)/charset.alias; \
+-	  if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+-	    orig=$(DESTDIR)$(libdir)/charset.alias; \
+-	    sed -f ref-add.sed $$orig > $$temp; \
+-	    $(INSTALL_DATA) $$temp $$dest; \
+-	    rm -f $$temp; \
+-	  else \
+-	    if test @GLIBC21@ = no; then \
+-	      orig=charset.alias; \
+-	      sed -f ref-add.sed $$orig > $$temp; \
+-	      $(INSTALL_DATA) $$temp $$dest; \
+-	      rm -f $$temp; \
+-	    fi; \
+-	  fi; \
+-	  $(mkdir_p) $(DESTDIR)$(localedir); \
+-	  test -f $(DESTDIR)$(localedir)/locale.alias \
+-	    && orig=$(DESTDIR)$(localedir)/locale.alias \
+-	    || orig=$(srcdir)/locale.alias; \
+-	  temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+-	  dest=$(DESTDIR)$(localedir)/locale.alias; \
+-	  sed -f ref-add.sed $$orig > $$temp; \
+-	  $(INSTALL_DATA) $$temp $$dest; \
+-	  rm -f $$temp; \
+-	else \
+-	  : ; \
+-	fi
+-install-data: all
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+-	  $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
+-	  $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
+-	  dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
+-	  for file in $$dists; do \
+-	    $(INSTALL_DATA) $(srcdir)/$$file \
+-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	  chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
+-	  dists="$(DISTFILES.generated)"; \
+-	  for file in $$dists; do \
+-	    if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+-	    $(INSTALL_DATA) $$dir/$$file \
+-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	  dists="$(DISTFILES.obsolete)"; \
+-	  for file in $$dists; do \
+-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	else \
+-	  : ; \
+-	fi
+-
+-install-strip: install
+-
+-install-dvi install-html install-info install-ps install-pdf:
+-
+-installdirs:
+-	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+-	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools" \
+-	   && test '@USE_INCLUDED_LIBINTL@' = no \
+-	   && test @GLIBC2@ != no; then \
+-	  $(mkdir_p) $(DESTDIR)$(libdir); \
+-	else \
+-	  : ; \
+-	fi
+-	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  test @GLIBC21@ != no || $(mkdir_p) $(DESTDIR)$(libdir); \
+-	  $(mkdir_p) $(DESTDIR)$(localedir); \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+-	else \
+-	  : ; \
+-	fi
+-
+-# Define this as empty until I found a useful application.
+-installcheck:
+-
+-uninstall:
+-	if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+-	   && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  rm -f $(DESTDIR)$(includedir)/libintl.h; \
+-	  $(LIBTOOL) --mode=uninstall \
+-	    rm -f $(DESTDIR)$(libdir)/libintl.$la; \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools" \
+-	   && test '@USE_INCLUDED_LIBINTL@' = no \
+-	   && test @GLIBC2@ != no; then \
+-	  rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+-	else \
+-	  : ; \
+-	fi
+-	if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+-	  if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+-	    temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+-	    dest=$(DESTDIR)$(libdir)/charset.alias; \
+-	    sed -f ref-del.sed $$dest > $$temp; \
+-	    if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+-	      rm -f $$dest; \
+-	    else \
+-	      $(INSTALL_DATA) $$temp $$dest; \
+-	    fi; \
+-	    rm -f $$temp; \
+-	  fi; \
+-	  if test -f $(DESTDIR)$(localedir)/locale.alias; then \
+-	    temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+-	    dest=$(DESTDIR)$(localedir)/locale.alias; \
+-	    sed -f ref-del.sed $$dest > $$temp; \
+-	    if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+-	      rm -f $$dest; \
+-	    else \
+-	      $(INSTALL_DATA) $$temp $$dest; \
+-	    fi; \
+-	    rm -f $$temp; \
+-	  fi; \
+-	else \
+-	  : ; \
+-	fi
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
+-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+-	  done; \
+-	else \
+-	  : ; \
+-	fi
+-
+-info dvi ps pdf html:
+-
+-$(OBJECTS): ../config.h libgnuintl.h
+-bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
+-hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
+-explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
+-dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
+-dcigettext.$lo: $(srcdir)/eval-plural.h
+-localcharset.$lo: $(srcdir)/localcharset.h
+-bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h
+-localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
+-printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
+-
+-# A bison-2.1 generated plural.c includes <libintl.h> if ENABLE_NLS.
+-PLURAL_DEPS_yes = libintl.h
+-PLURAL_DEPS_no =
+-plural.$lo: $(PLURAL_DEPS_@USE_INCLUDED_LIBINTL@)
+-
+-tags: TAGS
+-
+-TAGS: $(HEADERS) $(SOURCES)
+-	here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+-
+-ctags: CTAGS
+-
+-CTAGS: $(HEADERS) $(SOURCES)
+-	here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
+-
+-id: ID
+-
+-ID: $(HEADERS) $(SOURCES)
+-	here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
+-
+-
+-mostlyclean:
+-	rm -f *.a *.la *.o *.obj *.lo libintl.res core core.*
+-	rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
+-	rm -f -r .libs _libs
+-
+-clean: mostlyclean
+-
+-distclean: clean
+-	rm -f Makefile ID TAGS
+-	if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
+-	  rm -f ChangeLog.inst $(DISTFILES.normal); \
+-	else \
+-	  : ; \
+-	fi
+-
+-maintainer-clean: distclean
+-	@echo "This command is intended for maintainers to use;"
+-	@echo "it deletes files that may require special tools to rebuild."
+-
+-
+-# GNU gettext needs not contain the file `VERSION' but contains some
+-# other files which should not be distributed in other packages.
+-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+-dist distdir: Makefile
+-	if test "$(PACKAGE)" = "gettext-tools"; then \
+-	  : ; \
+-	else \
+-	  if test "$(PACKAGE)" = "gettext-runtime"; then \
+-	    additional="$(DISTFILES.gettext)"; \
+-	  else \
+-	    additional="$(DISTFILES.normal)"; \
+-	  fi; \
+-	  $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
+-	  for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
+-	    if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+-	    cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \
+-	  done; \
+-	fi
+-
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+-	cd $(top_builddir) && $(SHELL) ./config.status
+-# This would be more efficient, but doesn't work any more with autoconf-2.57,
+-# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
+-#	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+-
+-# Tell versions [3.59,3.63) of GNU make not to export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+--- a/intl/VERSION
++++ /dev/null
+@@ -1 +0,0 @@
+-GNU gettext library from gettext-0.17
+--- a/intl/bindtextdom.c
++++ /dev/null
+@@ -1,340 +0,0 @@
+-/* Implementation of the bindtextdomain(3) function
+-   Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stddef.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-# define gl_rwlock_define __libc_rwlock_define
+-# define gl_rwlock_wrlock __libc_rwlock_wrlock
+-# define gl_rwlock_unlock __libc_rwlock_unlock
+-#else
+-# include "lock.h"
+-#endif
+-
+-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>.  */
+-#ifndef offsetof
+-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Lock variable to protect the global data in the gettext implementation.  */
+-gl_rwlock_define (extern, _nl_state_lock attribute_hidden)
+-
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define BINDTEXTDOMAIN __bindtextdomain
+-# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
+-# ifndef strdup
+-#  define strdup(str) __strdup (str)
+-# endif
+-#else
+-# define BINDTEXTDOMAIN libintl_bindtextdomain
+-# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
+-#endif
+-
+-/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
+-   to be used for the DOMAINNAME message catalog.
+-   If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
+-   modified, only the current value is returned.
+-   If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
+-   modified nor returned.  */
+-static void
+-set_binding_values (const char *domainname,
+-		    const char **dirnamep, const char **codesetp)
+-{
+-  struct binding *binding;
+-  int modified;
+-
+-  /* Some sanity checks.  */
+-  if (domainname == NULL || domainname[0] == '\0')
+-    {
+-      if (dirnamep)
+-	*dirnamep = NULL;
+-      if (codesetp)
+-	*codesetp = NULL;
+-      return;
+-    }
+-
+-  gl_rwlock_wrlock (_nl_state_lock);
+-
+-  modified = 0;
+-
+-  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+-    {
+-      int compare = strcmp (domainname, binding->domainname);
+-      if (compare == 0)
+-	/* We found it!  */
+-	break;
+-      if (compare < 0)
+-	{
+-	  /* It is not in the list.  */
+-	  binding = NULL;
+-	  break;
+-	}
+-    }
+-
+-  if (binding != NULL)
+-    {
+-      if (dirnamep)
+-	{
+-	  const char *dirname = *dirnamep;
+-
+-	  if (dirname == NULL)
+-	    /* The current binding has be to returned.  */
+-	    *dirnamep = binding->dirname;
+-	  else
+-	    {
+-	      /* The domain is already bound.  If the new value and the old
+-		 one are equal we simply do nothing.  Otherwise replace the
+-		 old binding.  */
+-	      char *result = binding->dirname;
+-	      if (strcmp (dirname, result) != 0)
+-		{
+-		  if (strcmp (dirname, _nl_default_dirname) == 0)
+-		    result = (char *) _nl_default_dirname;
+-		  else
+-		    {
+-#if defined _LIBC || defined HAVE_STRDUP
+-		      result = strdup (dirname);
+-#else
+-		      size_t len = strlen (dirname) + 1;
+-		      result = (char *) malloc (len);
+-		      if (__builtin_expect (result != NULL, 1))
+-			memcpy (result, dirname, len);
+-#endif
+-		    }
+-
+-		  if (__builtin_expect (result != NULL, 1))
+-		    {
+-		      if (binding->dirname != _nl_default_dirname)
+-			free (binding->dirname);
+-
+-		      binding->dirname = result;
+-		      modified = 1;
+-		    }
+-		}
+-	      *dirnamep = result;
+-	    }
+-	}
+-
+-      if (codesetp)
+-	{
+-	  const char *codeset = *codesetp;
+-
+-	  if (codeset == NULL)
+-	    /* The current binding has be to returned.  */
+-	    *codesetp = binding->codeset;
+-	  else
+-	    {
+-	      /* The domain is already bound.  If the new value and the old
+-		 one are equal we simply do nothing.  Otherwise replace the
+-		 old binding.  */
+-	      char *result = binding->codeset;
+-	      if (result == NULL || strcmp (codeset, result) != 0)
+-		{
+-#if defined _LIBC || defined HAVE_STRDUP
+-		  result = strdup (codeset);
+-#else
+-		  size_t len = strlen (codeset) + 1;
+-		  result = (char *) malloc (len);
+-		  if (__builtin_expect (result != NULL, 1))
+-		    memcpy (result, codeset, len);
+-#endif
+-
+-		  if (__builtin_expect (result != NULL, 1))
+-		    {
+-		      if (binding->codeset != NULL)
+-			free (binding->codeset);
+-
+-		      binding->codeset = result;
+-		      modified = 1;
+-		    }
+-		}
+-	      *codesetp = result;
+-	    }
+-	}
+-    }
+-  else if ((dirnamep == NULL || *dirnamep == NULL)
+-	   && (codesetp == NULL || *codesetp == NULL))
+-    {
+-      /* Simply return the default values.  */
+-      if (dirnamep)
+-	*dirnamep = _nl_default_dirname;
+-      if (codesetp)
+-	*codesetp = NULL;
+-    }
+-  else
+-    {
+-      /* We have to create a new binding.  */
+-      size_t len = strlen (domainname) + 1;
+-      struct binding *new_binding =
+-	(struct binding *) malloc (offsetof (struct binding, domainname) + len);
+-
+-      if (__builtin_expect (new_binding == NULL, 0))
+-	goto failed;
+-
+-      memcpy (new_binding->domainname, domainname, len);
+-
+-      if (dirnamep)
+-	{
+-	  const char *dirname = *dirnamep;
+-
+-	  if (dirname == NULL)
+-	    /* The default value.  */
+-	    dirname = _nl_default_dirname;
+-	  else
+-	    {
+-	      if (strcmp (dirname, _nl_default_dirname) == 0)
+-		dirname = _nl_default_dirname;
+-	      else
+-		{
+-		  char *result;
+-#if defined _LIBC || defined HAVE_STRDUP
+-		  result = strdup (dirname);
+-		  if (__builtin_expect (result == NULL, 0))
+-		    goto failed_dirname;
+-#else
+-		  size_t len = strlen (dirname) + 1;
+-		  result = (char *) malloc (len);
+-		  if (__builtin_expect (result == NULL, 0))
+-		    goto failed_dirname;
+-		  memcpy (result, dirname, len);
+-#endif
+-		  dirname = result;
+-		}
+-	    }
+-	  *dirnamep = dirname;
+-	  new_binding->dirname = (char *) dirname;
+-	}
+-      else
+-	/* The default value.  */
+-	new_binding->dirname = (char *) _nl_default_dirname;
+-
+-      if (codesetp)
+-	{
+-	  const char *codeset = *codesetp;
+-
+-	  if (codeset != NULL)
+-	    {
+-	      char *result;
+-
+-#if defined _LIBC || defined HAVE_STRDUP
+-	      result = strdup (codeset);
+-	      if (__builtin_expect (result == NULL, 0))
+-		goto failed_codeset;
+-#else
+-	      size_t len = strlen (codeset) + 1;
+-	      result = (char *) malloc (len);
+-	      if (__builtin_expect (result == NULL, 0))
+-		goto failed_codeset;
+-	      memcpy (result, codeset, len);
+-#endif
+-	      codeset = result;
+-	    }
+-	  *codesetp = codeset;
+-	  new_binding->codeset = (char *) codeset;
+-	}
+-      else
+-	new_binding->codeset = NULL;
+-
+-      /* Now enqueue it.  */
+-      if (_nl_domain_bindings == NULL
+-	  || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
+-	{
+-	  new_binding->next = _nl_domain_bindings;
+-	  _nl_domain_bindings = new_binding;
+-	}
+-      else
+-	{
+-	  binding = _nl_domain_bindings;
+-	  while (binding->next != NULL
+-		 && strcmp (domainname, binding->next->domainname) > 0)
+-	    binding = binding->next;
+-
+-	  new_binding->next = binding->next;
+-	  binding->next = new_binding;
+-	}
+-
+-      modified = 1;
+-
+-      /* Here we deal with memory allocation failures.  */
+-      if (0)
+-	{
+-	failed_codeset:
+-	  if (new_binding->dirname != _nl_default_dirname)
+-	    free (new_binding->dirname);
+-	failed_dirname:
+-	  free (new_binding);
+-	failed:
+-	  if (dirnamep)
+-	    *dirnamep = NULL;
+-	  if (codesetp)
+-	    *codesetp = NULL;
+-	}
+-    }
+-
+-  /* If we modified any binding, we flush the caches.  */
+-  if (modified)
+-    ++_nl_msg_cat_cntr;
+-
+-  gl_rwlock_unlock (_nl_state_lock);
+-}
+-
+-/* Specify that the DOMAINNAME message catalog will be found
+-   in DIRNAME rather than in the system locale data base.  */
+-char *
+-BINDTEXTDOMAIN (const char *domainname, const char *dirname)
+-{
+-  set_binding_values (domainname, &dirname, NULL);
+-  return (char *) dirname;
+-}
+-
+-/* Specify the character encoding in which the messages from the
+-   DOMAINNAME message catalog will be returned.  */
+-char *
+-BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset)
+-{
+-  set_binding_values (domainname, NULL, &codeset);
+-  return (char *) codeset;
+-}
+-
+-#ifdef _LIBC
+-/* Aliases for function names in GNU C Library.  */
+-weak_alias (__bindtextdomain, bindtextdomain);
+-weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
+-#endif
+--- a/intl/config.charset
++++ /dev/null
+@@ -1,640 +0,0 @@
+-#! /bin/sh
+-# Output a system dependent table of character encoding aliases.
+-#
+-#   Copyright (C) 2000-2004, 2006 Free Software Foundation, Inc.
+-#
+-#   This program 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, 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
+-#   Library General Public License for more details.
+-#
+-#   You should have received a copy of the GNU Library 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.
+-#
+-# The table consists of lines of the form
+-#    ALIAS  CANONICAL
+-#
+-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
+-# ALIAS is compared in a case sensitive way.
+-#
+-# CANONICAL is the GNU canonical name for this character encoding.
+-# It must be an encoding supported by libiconv. Support by GNU libc is
+-# also desirable. CANONICAL is case insensitive. Usually an upper case
+-# MIME charset name is preferred.
+-# The current list of GNU canonical charset names is as follows.
+-#
+-#       name              MIME?             used by which systems
+-#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin
+-#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+-#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+-#   ISO-8859-3              Y   glibc solaris
+-#   ISO-8859-4              Y   osf solaris freebsd netbsd darwin
+-#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+-#   ISO-8859-6              Y   glibc aix hpux solaris
+-#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd darwin
+-#   ISO-8859-8              Y   glibc aix hpux osf solaris
+-#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin
+-#   ISO-8859-13                 glibc netbsd darwin
+-#   ISO-8859-14                 glibc
+-#   ISO-8859-15                 glibc aix osf solaris freebsd darwin
+-#   KOI8-R                  Y   glibc solaris freebsd netbsd darwin
+-#   KOI8-U                  Y   glibc freebsd netbsd darwin
+-#   KOI8-T                      glibc
+-#   CP437                       dos
+-#   CP775                       dos
+-#   CP850                       aix osf dos
+-#   CP852                       dos
+-#   CP855                       dos
+-#   CP856                       aix
+-#   CP857                       dos
+-#   CP861                       dos
+-#   CP862                       dos
+-#   CP864                       dos
+-#   CP865                       dos
+-#   CP866                       freebsd netbsd darwin dos
+-#   CP869                       dos
+-#   CP874                       woe32 dos
+-#   CP922                       aix
+-#   CP932                       aix woe32 dos
+-#   CP943                       aix
+-#   CP949                       osf woe32 dos
+-#   CP950                       woe32 dos
+-#   CP1046                      aix
+-#   CP1124                      aix
+-#   CP1125                      dos
+-#   CP1129                      aix
+-#   CP1250                      woe32
+-#   CP1251                      glibc solaris netbsd darwin woe32
+-#   CP1252                      aix woe32
+-#   CP1253                      woe32
+-#   CP1254                      woe32
+-#   CP1255                      glibc woe32
+-#   CP1256                      woe32
+-#   CP1257                      woe32
+-#   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin
+-#   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+-#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+-#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
+-#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin
+-#   BIG5-HKSCS                  glibc solaris
+-#   GBK                         glibc aix osf solaris woe32 dos
+-#   GB18030                     glibc solaris netbsd
+-#   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
+-#   JOHAB                       glibc solaris woe32
+-#   TIS-620                     glibc aix hpux osf solaris
+-#   VISCII                  Y   glibc
+-#   TCVN5712-1                  glibc
+-#   GEORGIAN-PS                 glibc
+-#   HP-ROMAN8                   hpux
+-#   HP-ARABIC8                  hpux
+-#   HP-GREEK8                   hpux
+-#   HP-HEBREW8                  hpux
+-#   HP-TURKISH8                 hpux
+-#   HP-KANA8                    hpux
+-#   DEC-KANJI                   osf
+-#   DEC-HANYU                   osf
+-#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin
+-#
+-# Note: Names which are not marked as being a MIME name should not be used in
+-# Internet protocols for information interchange (mail, news, etc.).
+-#
+-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
+-# must understand both names and treat them as equivalent.
+-#
+-# The first argument passed to this file is the canonical host specification,
+-#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+-# or
+-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+-
+-host="$1"
+-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
+-echo "# This file contains a table of character encoding aliases,"
+-echo "# suitable for operating system '${os}'."
+-echo "# It was automatically generated from config.charset."
+-# List of references, updated during installation:
+-echo "# Packages using this file: "
+-case "$os" in
+-    linux-gnulibc1*)
+-	# Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+-	# localcharset.c falls back to using the full locale name
+-	# from the environment variables.
+-	echo "C ASCII"
+-	echo "POSIX ASCII"
+-	for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+-	         en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+-	         en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+-	         es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+-	         et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+-	         fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+-	         it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+-	         sv_FI sv_SE; do
+-	  echo "$l ISO-8859-1"
+-	  echo "$l.iso-8859-1 ISO-8859-1"
+-	  echo "$l.iso-8859-15 ISO-8859-15"
+-	  echo "$l.iso-8859-15@euro ISO-8859-15"
+-	  echo "$l@euro ISO-8859-15"
+-	  echo "$l.cp-437 CP437"
+-	  echo "$l.cp-850 CP850"
+-	  echo "$l.cp-1252 CP1252"
+-	  echo "$l.cp-1252@euro CP1252"
+-	  #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+-	  echo "$l.utf-8 UTF-8"
+-	  echo "$l.utf-8@euro UTF-8"
+-	done
+-	for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+-	         sl_SI sr sr_CS sr_YU; do
+-	  echo "$l ISO-8859-2"
+-	  echo "$l.iso-8859-2 ISO-8859-2"
+-	  echo "$l.cp-852 CP852"
+-	  echo "$l.cp-1250 CP1250"
+-	  echo "$l.utf-8 UTF-8"
+-	done
+-	for l in mk mk_MK ru ru_RU; do
+-	  echo "$l ISO-8859-5"
+-	  echo "$l.iso-8859-5 ISO-8859-5"
+-	  echo "$l.koi8-r KOI8-R"
+-	  echo "$l.cp-866 CP866"
+-	  echo "$l.cp-1251 CP1251"
+-	  echo "$l.utf-8 UTF-8"
+-	done
+-	for l in ar ar_SA; do
+-	  echo "$l ISO-8859-6"
+-	  echo "$l.iso-8859-6 ISO-8859-6"
+-	  echo "$l.cp-864 CP864"
+-	  #echo "$l.cp-868 CP868" # not a commonly used encoding
+-	  echo "$l.cp-1256 CP1256"
+-	  echo "$l.utf-8 UTF-8"
+-	done
+-	for l in el el_GR gr gr_GR; do
+-	  echo "$l ISO-8859-7"
+-	  echo "$l.iso-8859-7 ISO-8859-7"
+-	  echo "$l.cp-869 CP869"
+-	  echo "$l.cp-1253 CP1253"
+-	  echo "$l.cp-1253@euro CP1253"
+-	  echo "$l.utf-8 UTF-8"
+-	  echo "$l.utf-8@euro UTF-8"
+-	done
+-	for l in he he_IL iw iw_IL; do
+-	  echo "$l ISO-8859-8"
+-	  echo "$l.iso-8859-8 ISO-8859-8"
+-	  echo "$l.cp-862 CP862"
+-	  echo "$l.cp-1255 CP1255"
+-	  echo "$l.utf-8 UTF-8"
+-	done
+-	for l in tr tr_TR; do
+-	  echo "$l ISO-8859-9"
+-	  echo "$l.iso-8859-9 ISO-8859-9"
+-	  echo "$l.cp-857 CP857"
+-	  echo "$l.cp-1254 CP1254"
+-	  echo "$l.utf-8 UTF-8"
+-	done
+-	for l in lt lt_LT lv lv_LV; do
+-	  #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+-	  echo "$l ISO-8859-13"
+-	done
+-	for l in ru_UA uk uk_UA; do
+-	  echo "$l KOI8-U"
+-	done
+-	for l in zh zh_CN; do
+-	  #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+-	  echo "$l GB2312"
+-	done
+-	for l in ja ja_JP ja_JP.EUC; do
+-	  echo "$l EUC-JP"
+-	done
+-	for l in ko ko_KR; do
+-	  echo "$l EUC-KR"
+-	done
+-	for l in th th_TH; do
+-	  echo "$l TIS-620"
+-	done
+-	for l in fa fa_IR; do
+-	  #echo "$l ISIRI-3342" # a broken encoding
+-	  echo "$l.utf-8 UTF-8"
+-	done
+-	;;
+-    linux* | *-gnu*)
+-	# With glibc-2.1 or newer, we don't need any canonicalization,
+-	# because glibc has iconv and both glibc and libiconv support all
+-	# GNU canonical names directly. Therefore, the Makefile does not
+-	# need to install the alias file at all.
+-	# The following applies only to glibc-2.0.x and older libcs.
+-	echo "ISO_646.IRV:1983 ASCII"
+-	;;
+-    aix*)
+-	echo "ISO8859-1 ISO-8859-1"
+-	echo "ISO8859-2 ISO-8859-2"
+-	echo "ISO8859-5 ISO-8859-5"
+-	echo "ISO8859-6 ISO-8859-6"
+-	echo "ISO8859-7 ISO-8859-7"
+-	echo "ISO8859-8 ISO-8859-8"
+-	echo "ISO8859-9 ISO-8859-9"
+-	echo "ISO8859-15 ISO-8859-15"
+-	echo "IBM-850 CP850"
+-	echo "IBM-856 CP856"
+-	echo "IBM-921 ISO-8859-13"
+-	echo "IBM-922 CP922"
+-	echo "IBM-932 CP932"
+-	echo "IBM-943 CP943"
+-	echo "IBM-1046 CP1046"
+-	echo "IBM-1124 CP1124"
+-	echo "IBM-1129 CP1129"
+-	echo "IBM-1252 CP1252"
+-	echo "IBM-eucCN GB2312"
+-	echo "IBM-eucJP EUC-JP"
+-	echo "IBM-eucKR EUC-KR"
+-	echo "IBM-eucTW EUC-TW"
+-	echo "big5 BIG5"
+-	echo "GBK GBK"
+-	echo "TIS-620 TIS-620"
+-	echo "UTF-8 UTF-8"
+-	;;
+-    hpux*)
+-	echo "iso88591 ISO-8859-1"
+-	echo "iso88592 ISO-8859-2"
+-	echo "iso88595 ISO-8859-5"
+-	echo "iso88596 ISO-8859-6"
+-	echo "iso88597 ISO-8859-7"
+-	echo "iso88598 ISO-8859-8"
+-	echo "iso88599 ISO-8859-9"
+-	echo "iso885915 ISO-8859-15"
+-	echo "roman8 HP-ROMAN8"
+-	echo "arabic8 HP-ARABIC8"
+-	echo "greek8 HP-GREEK8"
+-	echo "hebrew8 HP-HEBREW8"
+-	echo "turkish8 HP-TURKISH8"
+-	echo "kana8 HP-KANA8"
+-	echo "tis620 TIS-620"
+-	echo "big5 BIG5"
+-	echo "eucJP EUC-JP"
+-	echo "eucKR EUC-KR"
+-	echo "eucTW EUC-TW"
+-	echo "hp15CN GB2312"
+-	#echo "ccdc ?" # what is this?
+-	echo "SJIS SHIFT_JIS"
+-	echo "utf8 UTF-8"
+-	;;
+-    irix*)
+-	echo "ISO8859-1 ISO-8859-1"
+-	echo "ISO8859-2 ISO-8859-2"
+-	echo "ISO8859-5 ISO-8859-5"
+-	echo "ISO8859-7 ISO-8859-7"
+-	echo "ISO8859-9 ISO-8859-9"
+-	echo "eucCN GB2312"
+-	echo "eucJP EUC-JP"
+-	echo "eucKR EUC-KR"
+-	echo "eucTW EUC-TW"
+-	;;
+-    osf*)
+-	echo "ISO8859-1 ISO-8859-1"
+-	echo "ISO8859-2 ISO-8859-2"
+-	echo "ISO8859-4 ISO-8859-4"
+-	echo "ISO8859-5 ISO-8859-5"
+-	echo "ISO8859-7 ISO-8859-7"
+-	echo "ISO8859-8 ISO-8859-8"
+-	echo "ISO8859-9 ISO-8859-9"
+-	echo "ISO8859-15 ISO-8859-15"
+-	echo "cp850 CP850"
+-	echo "big5 BIG5"
+-	echo "dechanyu DEC-HANYU"
+-	echo "dechanzi GB2312"
+-	echo "deckanji DEC-KANJI"
+-	echo "deckorean EUC-KR"
+-	echo "eucJP EUC-JP"
+-	echo "eucKR EUC-KR"
+-	echo "eucTW EUC-TW"
+-	echo "GBK GBK"
+-	echo "KSC5601 CP949"
+-	echo "sdeckanji EUC-JP"
+-	echo "SJIS SHIFT_JIS"
+-	echo "TACTIS TIS-620"
+-	echo "UTF-8 UTF-8"
+-	;;
+-    solaris*)
+-	echo "646 ASCII"
+-	echo "ISO8859-1 ISO-8859-1"
+-	echo "ISO8859-2 ISO-8859-2"
+-	echo "ISO8859-3 ISO-8859-3"
+-	echo "ISO8859-4 ISO-8859-4"
+-	echo "ISO8859-5 ISO-8859-5"
+-	echo "ISO8859-6 ISO-8859-6"
+-	echo "ISO8859-7 ISO-8859-7"
+-	echo "ISO8859-8 ISO-8859-8"
+-	echo "ISO8859-9 ISO-8859-9"
+-	echo "ISO8859-15 ISO-8859-15"
+-	echo "koi8-r KOI8-R"
+-	echo "ansi-1251 CP1251"
+-	echo "BIG5 BIG5"
+-	echo "Big5-HKSCS BIG5-HKSCS"
+-	echo "gb2312 GB2312"
+-	echo "GBK GBK"
+-	echo "GB18030 GB18030"
+-	echo "cns11643 EUC-TW"
+-	echo "5601 EUC-KR"
+-	echo "ko_KR.johap92 JOHAB"
+-	echo "eucJP EUC-JP"
+-	echo "PCK SHIFT_JIS"
+-	echo "TIS620.2533 TIS-620"
+-	#echo "sun_eu_greek ?" # what is this?
+-	echo "UTF-8 UTF-8"
+-	;;
+-    freebsd* | os2*)
+-	# FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
+-	# localcharset.c falls back to using the full locale name
+-	# from the environment variables.
+-	# Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
+-	# reuse FreeBSD's locale data for OS/2.
+-	echo "C ASCII"
+-	echo "US-ASCII ASCII"
+-	for l in la_LN lt_LN; do
+-	  echo "$l.ASCII ASCII"
+-	done
+-	for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+-	         fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
+-	         lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
+-	  echo "$l.ISO_8859-1 ISO-8859-1"
+-	  echo "$l.DIS_8859-15 ISO-8859-15"
+-	done
+-	for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
+-	  echo "$l.ISO_8859-2 ISO-8859-2"
+-	done
+-	for l in la_LN lt_LT; do
+-	  echo "$l.ISO_8859-4 ISO-8859-4"
+-	done
+-	for l in ru_RU ru_SU; do
+-	  echo "$l.KOI8-R KOI8-R"
+-	  echo "$l.ISO_8859-5 ISO-8859-5"
+-	  echo "$l.CP866 CP866"
+-	done
+-	echo "uk_UA.KOI8-U KOI8-U"
+-	echo "zh_TW.BIG5 BIG5"
+-	echo "zh_TW.Big5 BIG5"
+-	echo "zh_CN.EUC GB2312"
+-	echo "ja_JP.EUC EUC-JP"
+-	echo "ja_JP.SJIS SHIFT_JIS"
+-	echo "ja_JP.Shift_JIS SHIFT_JIS"
+-	echo "ko_KR.EUC EUC-KR"
+-	;;
+-    netbsd*)
+-	echo "646 ASCII"
+-	echo "ISO8859-1 ISO-8859-1"
+-	echo "ISO8859-2 ISO-8859-2"
+-	echo "ISO8859-4 ISO-8859-4"
+-	echo "ISO8859-5 ISO-8859-5"
+-	echo "ISO8859-7 ISO-8859-7"
+-	echo "ISO8859-13 ISO-8859-13"
+-	echo "ISO8859-15 ISO-8859-15"
+-	echo "eucCN GB2312"
+-	echo "eucJP EUC-JP"
+-	echo "eucKR EUC-KR"
+-	echo "eucTW EUC-TW"
+-	echo "BIG5 BIG5"
+-	echo "SJIS SHIFT_JIS"
+-	;;
+-    darwin[56]*)
+-	# Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+-	# localcharset.c falls back to using the full locale name
+-	# from the environment variables.
+-	echo "C ASCII"
+-	for l in en_AU en_CA en_GB en_US la_LN; do
+-	  echo "$l.US-ASCII ASCII"
+-	done
+-	for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+-	         fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+-	         nl_NL no_NO pt_PT sv_SE; do
+-	  echo "$l ISO-8859-1"
+-	  echo "$l.ISO8859-1 ISO-8859-1"
+-	  echo "$l.ISO8859-15 ISO-8859-15"
+-	done
+-	for l in la_LN; do
+-	  echo "$l.ISO8859-1 ISO-8859-1"
+-	  echo "$l.ISO8859-15 ISO-8859-15"
+-	done
+-	for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+-	  echo "$l.ISO8859-2 ISO-8859-2"
+-	done
+-	for l in la_LN lt_LT; do
+-	  echo "$l.ISO8859-4 ISO-8859-4"
+-	done
+-	for l in ru_RU; do
+-	  echo "$l.KOI8-R KOI8-R"
+-	  echo "$l.ISO8859-5 ISO-8859-5"
+-	  echo "$l.CP866 CP866"
+-	done
+-	for l in bg_BG; do
+-	  echo "$l.CP1251 CP1251"
+-	done
+-	echo "uk_UA.KOI8-U KOI8-U"
+-	echo "zh_TW.BIG5 BIG5"
+-	echo "zh_TW.Big5 BIG5"
+-	echo "zh_CN.EUC GB2312"
+-	echo "ja_JP.EUC EUC-JP"
+-	echo "ja_JP.SJIS SHIFT_JIS"
+-	echo "ko_KR.EUC EUC-KR"
+-	;;
+-    darwin*)
+-	# Darwin 7.5 has nl_langinfo(CODESET), but it is useless:
+-	# - It returns the empty string when LANG is set to a locale of the
+-	#   form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+-	#   LC_CTYPE file.
+-	# - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+-	#   the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+-	# - The documentation says:
+-	#     "... all code that calls BSD system routines should ensure
+-	#      that the const *char parameters of these routines are in UTF-8
+-	#      encoding. All BSD system functions expect their string
+-	#      parameters to be in UTF-8 encoding and nothing else."
+-	#   It also says
+-	#     "An additional caveat is that string parameters for files,
+-	#      paths, and other file-system entities must be in canonical
+-	#      UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+-	#      characters are decomposed ..."
+-	#   but this is not true: You can pass non-decomposed UTF-8 strings
+-	#   to file system functions, and it is the OS which will convert
+-	#   them to decomposed UTF-8 before accessing the file system.
+-	# - The Apple Terminal application displays UTF-8 by default.
+-	# - However, other applications are free to use different encodings:
+-	#   - xterm uses ISO-8859-1 by default.
+-	#   - TextEdit uses MacRoman by default.
+-	# We prefer UTF-8 over decomposed UTF-8-MAC because one should
+-	# minimize the use of decomposed Unicode. Unfortunately, through the
+-	# Darwin file system, decomposed UTF-8 strings are leaked into user
+-	# space nevertheless.
+-	echo "* UTF-8"
+-	;;
+-    beos*)
+-	# BeOS has a single locale, and it has UTF-8 encoding.
+-	echo "* UTF-8"
+-	;;
+-    msdosdjgpp*)
+-	# DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
+-	# localcharset.c falls back to using the full locale name
+-	# from the environment variables.
+-	echo "#"
+-	echo "# The encodings given here may not all be correct."
+-	echo "# If you find that the encoding given for your language and"
+-	echo "# country is not the one your DOS machine actually uses, just"
+-	echo "# correct it in this file, and send a mail to"
+-	echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
+-	echo "# and Bruno Haible <bruno@clisp.org>."
+-	echo "#"
+-	echo "C ASCII"
+-	# ISO-8859-1 languages
+-	echo "ca CP850"
+-	echo "ca_ES CP850"
+-	echo "da CP865"    # not CP850 ??
+-	echo "da_DK CP865" # not CP850 ??
+-	echo "de CP850"
+-	echo "de_AT CP850"
+-	echo "de_CH CP850"
+-	echo "de_DE CP850"
+-	echo "en CP850"
+-	echo "en_AU CP850" # not CP437 ??
+-	echo "en_CA CP850"
+-	echo "en_GB CP850"
+-	echo "en_NZ CP437"
+-	echo "en_US CP437"
+-	echo "en_ZA CP850" # not CP437 ??
+-	echo "es CP850"
+-	echo "es_AR CP850"
+-	echo "es_BO CP850"
+-	echo "es_CL CP850"
+-	echo "es_CO CP850"
+-	echo "es_CR CP850"
+-	echo "es_CU CP850"
+-	echo "es_DO CP850"
+-	echo "es_EC CP850"
+-	echo "es_ES CP850"
+-	echo "es_GT CP850"
+-	echo "es_HN CP850"
+-	echo "es_MX CP850"
+-	echo "es_NI CP850"
+-	echo "es_PA CP850"
+-	echo "es_PY CP850"
+-	echo "es_PE CP850"
+-	echo "es_SV CP850"
+-	echo "es_UY CP850"
+-	echo "es_VE CP850"
+-	echo "et CP850"
+-	echo "et_EE CP850"
+-	echo "eu CP850"
+-	echo "eu_ES CP850"
+-	echo "fi CP850"
+-	echo "fi_FI CP850"
+-	echo "fr CP850"
+-	echo "fr_BE CP850"
+-	echo "fr_CA CP850"
+-	echo "fr_CH CP850"
+-	echo "fr_FR CP850"
+-	echo "ga CP850"
+-	echo "ga_IE CP850"
+-	echo "gd CP850"
+-	echo "gd_GB CP850"
+-	echo "gl CP850"
+-	echo "gl_ES CP850"
+-	echo "id CP850"    # not CP437 ??
+-	echo "id_ID CP850" # not CP437 ??
+-	echo "is CP861"    # not CP850 ??
+-	echo "is_IS CP861" # not CP850 ??
+-	echo "it CP850"
+-	echo "it_CH CP850"
+-	echo "it_IT CP850"
+-	echo "lt CP775"
+-	echo "lt_LT CP775"
+-	echo "lv CP775"
+-	echo "lv_LV CP775"
+-	echo "nb CP865"    # not CP850 ??
+-	echo "nb_NO CP865" # not CP850 ??
+-	echo "nl CP850"
+-	echo "nl_BE CP850"
+-	echo "nl_NL CP850"
+-	echo "nn CP865"    # not CP850 ??
+-	echo "nn_NO CP865" # not CP850 ??
+-	echo "no CP865"    # not CP850 ??
+-	echo "no_NO CP865" # not CP850 ??
+-	echo "pt CP850"
+-	echo "pt_BR CP850"
+-	echo "pt_PT CP850"
+-	echo "sv CP850"
+-	echo "sv_SE CP850"
+-	# ISO-8859-2 languages
+-	echo "cs CP852"
+-	echo "cs_CZ CP852"
+-	echo "hr CP852"
+-	echo "hr_HR CP852"
+-	echo "hu CP852"
+-	echo "hu_HU CP852"
+-	echo "pl CP852"
+-	echo "pl_PL CP852"
+-	echo "ro CP852"
+-	echo "ro_RO CP852"
+-	echo "sk CP852"
+-	echo "sk_SK CP852"
+-	echo "sl CP852"
+-	echo "sl_SI CP852"
+-	echo "sq CP852"
+-	echo "sq_AL CP852"
+-	echo "sr CP852"    # CP852 or CP866 or CP855 ??
+-	echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
+-	echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
+-	# ISO-8859-3 languages
+-	echo "mt CP850"
+-	echo "mt_MT CP850"
+-	# ISO-8859-5 languages
+-	echo "be CP866"
+-	echo "be_BE CP866"
+-	echo "bg CP866"    # not CP855 ??
+-	echo "bg_BG CP866" # not CP855 ??
+-	echo "mk CP866"    # not CP855 ??
+-	echo "mk_MK CP866" # not CP855 ??
+-	echo "ru CP866"
+-	echo "ru_RU CP866"
+-	echo "uk CP1125"
+-	echo "uk_UA CP1125"
+-	# ISO-8859-6 languages
+-	echo "ar CP864"
+-	echo "ar_AE CP864"
+-	echo "ar_DZ CP864"
+-	echo "ar_EG CP864"
+-	echo "ar_IQ CP864"
+-	echo "ar_IR CP864"
+-	echo "ar_JO CP864"
+-	echo "ar_KW CP864"
+-	echo "ar_MA CP864"
+-	echo "ar_OM CP864"
+-	echo "ar_QA CP864"
+-	echo "ar_SA CP864"
+-	echo "ar_SY CP864"
+-	# ISO-8859-7 languages
+-	echo "el CP869"
+-	echo "el_GR CP869"
+-	# ISO-8859-8 languages
+-	echo "he CP862"
+-	echo "he_IL CP862"
+-	# ISO-8859-9 languages
+-	echo "tr CP857"
+-	echo "tr_TR CP857"
+-	# Japanese
+-	echo "ja CP932"
+-	echo "ja_JP CP932"
+-	# Chinese
+-	echo "zh_CN GBK"
+-	echo "zh_TW CP950" # not CP938 ??
+-	# Korean
+-	echo "kr CP949"    # not CP934 ??
+-	echo "kr_KR CP949" # not CP934 ??
+-	# Thai
+-	echo "th CP874"
+-	echo "th_TH CP874"
+-	# Other
+-	echo "eo CP850"
+-	echo "eo_EO CP850"
+-	;;
+-esac
+--- a/intl/dcgettext.c
++++ /dev/null
+@@ -1,56 +0,0 @@
+-/* Implementation of the dcgettext(3) function.
+-   Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define DCGETTEXT __dcgettext
+-# define DCIGETTEXT __dcigettext
+-#else
+-# define DCGETTEXT libintl_dcgettext
+-# define DCIGETTEXT libintl_dcigettext
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+-   locale.  */
+-char *
+-DCGETTEXT (const char *domainname, const char *msgid, int category)
+-{
+-  return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-INTDEF(__dcgettext)
+-weak_alias (__dcgettext, dcgettext);
+-#endif
+--- a/intl/dcigettext.c
++++ /dev/null
+@@ -1,1689 +0,0 @@
+-/* Implementation of the internal dcigettext function.
+-   Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
+-   This must come before <config.h> because <config.h> may include
+-   <features.h>, and once <features.h> has been included, it's too late.  */
+-#ifndef _GNU_SOURCE
+-# define _GNU_SOURCE	1
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-/* NL_LOCALE_NAME does not work in glibc-2.4.  Ignore it.  */
+-#undef HAVE_NL_LOCALE_NAME
+-
+-#include <sys/types.h>
+-
+-#ifdef __GNUC__
+-# define alloca __builtin_alloca
+-# define HAVE_ALLOCA 1
+-#else
+-# ifdef _MSC_VER
+-#  include <malloc.h>
+-#  define alloca _alloca
+-# else
+-#  if defined HAVE_ALLOCA_H || defined _LIBC
+-#   include <alloca.h>
+-#  else
+-#   ifdef _AIX
+- #pragma alloca
+-#   else
+-#    ifndef alloca
+-char *alloca ();
+-#    endif
+-#   endif
+-#  endif
+-# endif
+-#endif
+-
+-#include <errno.h>
+-#ifndef errno
+-extern int errno;
+-#endif
+-#ifndef __set_errno
+-# define __set_errno(val) errno = (val)
+-#endif
+-
+-#include <stddef.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#if defined HAVE_UNISTD_H || defined _LIBC
+-# include <unistd.h>
+-#endif
+-
+-#include <locale.h>
+-
+-#ifdef _LIBC
+-  /* Guess whether integer division by zero raises signal SIGFPE.
+-     Set to 1 only if you know for sure.  In case of doubt, set to 0.  */
+-# if defined __alpha__ || defined __arm__ || defined __i386__ \
+-     || defined __m68k__ || defined __s390__
+-#  define INTDIV0_RAISES_SIGFPE 1
+-# else
+-#  define INTDIV0_RAISES_SIGFPE 0
+-# endif
+-#endif
+-#if !INTDIV0_RAISES_SIGFPE
+-# include <signal.h>
+-#endif
+-
+-#if defined HAVE_SYS_PARAM_H || defined _LIBC
+-# include <sys/param.h>
+-#endif
+-
+-#if !defined _LIBC
+-# if HAVE_NL_LOCALE_NAME
+-#  include <langinfo.h>
+-# endif
+-# include "localcharset.h"
+-#endif
+-
+-#include "gettextP.h"
+-#include "plural-exp.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# ifdef IN_LIBGLOCALE
+-#  include <libintl.h>
+-# endif
+-# include "libgnuintl.h"
+-#endif
+-#include "hash-string.h"
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-# define gl_rwlock_define_initialized __libc_rwlock_define_initialized
+-# define gl_rwlock_rdlock __libc_rwlock_rdlock
+-# define gl_rwlock_wrlock __libc_rwlock_wrlock
+-# define gl_rwlock_unlock __libc_rwlock_unlock
+-#else
+-# include "lock.h"
+-#endif
+-
+-/* Alignment of types.  */
+-#if defined __GNUC__ && __GNUC__ >= 2
+-# define alignof(TYPE) __alignof__ (TYPE)
+-#else
+-# define alignof(TYPE) \
+-    ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
+-#endif
+-
+-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>.  */
+-#ifndef offsetof
+-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ANSI C functions.  This is required by the standard
+-   because some ANSI C functions will require linking with this object
+-   file and the name space must not be polluted.  */
+-# define getcwd __getcwd
+-# ifndef stpcpy
+-#  define stpcpy __stpcpy
+-# endif
+-# define tfind __tfind
+-#else
+-# if !defined HAVE_GETCWD
+-char *getwd ();
+-#  define getcwd(buf, max) getwd (buf)
+-# else
+-#  if VMS
+-#   define getcwd(buf, max) (getcwd) (buf, max, 0)
+-#  else
+-char *getcwd ();
+-#  endif
+-# endif
+-# ifndef HAVE_STPCPY
+-static char *stpcpy (char *dest, const char *src);
+-# endif
+-# ifndef HAVE_MEMPCPY
+-static void *mempcpy (void *dest, const void *src, size_t n);
+-# endif
+-#endif
+-
+-/* Use a replacement if the system does not provide the `tsearch' function
+-   family.  */
+-#if HAVE_TSEARCH || defined _LIBC
+-# include <search.h>
+-#else
+-# define tsearch libintl_tsearch
+-# define tfind libintl_tfind
+-# define tdelete libintl_tdelete
+-# define twalk libintl_twalk
+-# include "tsearch.h"
+-#endif
+-
+-#ifdef _LIBC
+-# define tsearch __tsearch
+-#endif
+-
+-/* Amount to increase buffer size by in each try.  */
+-#define PATH_INCR 32
+-
+-/* The following is from pathmax.h.  */
+-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
+-   PATH_MAX but might cause redefinition warnings when sys/param.h is
+-   later included (as on MORE/BSD 4.3).  */
+-#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
+-# include <limits.h>
+-#endif
+-
+-#ifndef _POSIX_PATH_MAX
+-# define _POSIX_PATH_MAX 255
+-#endif
+-
+-#if !defined PATH_MAX && defined _PC_PATH_MAX
+-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
+-#endif
+-
+-/* Don't include sys/param.h if it already has been.  */
+-#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
+-# include <sys/param.h>
+-#endif
+-
+-#if !defined PATH_MAX && defined MAXPATHLEN
+-# define PATH_MAX MAXPATHLEN
+-#endif
+-
+-#ifndef PATH_MAX
+-# define PATH_MAX _POSIX_PATH_MAX
+-#endif
+-
+-/* Pathname support.
+-   ISSLASH(C)           tests whether C is a directory separator character.
+-   IS_ABSOLUTE_PATH(P)  tests whether P is an absolute path.  If it is not,
+-                        it may be concatenated to a directory pathname.
+-   IS_PATH_WITH_DIR(P)  tests whether P contains a directory specification.
+- */
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+-  /* Win32, Cygwin, OS/2, DOS */
+-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+-# define HAS_DEVICE(P) \
+-    ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+-     && (P)[1] == ':')
+-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
+-# define IS_PATH_WITH_DIR(P) \
+-    (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
+-#else
+-  /* Unix */
+-# define ISSLASH(C) ((C) == '/')
+-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
+-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
+-#endif
+-
+-/* Whether to support different locales in different threads.  */
+-#if defined _LIBC || HAVE_NL_LOCALE_NAME || (HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS) || defined IN_LIBGLOCALE
+-# define HAVE_PER_THREAD_LOCALE
+-#endif
+-
+-/* This is the type used for the search tree where known translations
+-   are stored.  */
+-struct known_translation_t
+-{
+-  /* Domain in which to search.  */
+-  const char *domainname;
+-
+-  /* The category.  */
+-  int category;
+-
+-#ifdef HAVE_PER_THREAD_LOCALE
+-  /* Name of the relevant locale category, or "" for the global locale.  */
+-  const char *localename;
+-#endif
+-
+-#ifdef IN_LIBGLOCALE
+-  /* The character encoding.  */
+-  const char *encoding;
+-#endif
+-
+-  /* State of the catalog counter at the point the string was found.  */
+-  int counter;
+-
+-  /* Catalog where the string was found.  */
+-  struct loaded_l10nfile *domain;
+-
+-  /* And finally the translation.  */
+-  const char *translation;
+-  size_t translation_length;
+-
+-  /* Pointer to the string in question.  */
+-  char msgid[ZERO];
+-};
+-
+-gl_rwlock_define_initialized (static, tree_lock)
+-
+-/* Root of the search tree with known translations.  */
+-static void *root;
+-
+-/* Function to compare two entries in the table of known translations.  */
+-static int
+-transcmp (const void *p1, const void *p2)
+-{
+-  const struct known_translation_t *s1;
+-  const struct known_translation_t *s2;
+-  int result;
+-
+-  s1 = (const struct known_translation_t *) p1;
+-  s2 = (const struct known_translation_t *) p2;
+-
+-  result = strcmp (s1->msgid, s2->msgid);
+-  if (result == 0)
+-    {
+-      result = strcmp (s1->domainname, s2->domainname);
+-      if (result == 0)
+-	{
+-#ifdef HAVE_PER_THREAD_LOCALE
+-	  result = strcmp (s1->localename, s2->localename);
+-	  if (result == 0)
+-#endif
+-	    {
+-#ifdef IN_LIBGLOCALE
+-	      result = strcmp (s1->encoding, s2->encoding);
+-	      if (result == 0)
+-#endif
+-		/* We compare the category last (though this is the cheapest
+-		   operation) since it is hopefully always the same (namely
+-		   LC_MESSAGES).  */
+-		result = s1->category - s2->category;
+-	    }
+-	}
+-    }
+-
+-  return result;
+-}
+-
+-/* Name of the default domain used for gettext(3) prior any call to
+-   textdomain(3).  The default value for this is "messages".  */
+-const char _nl_default_default_domain[] attribute_hidden = "messages";
+-
+-#ifndef IN_LIBGLOCALE
+-/* Value used as the default domain for gettext(3).  */
+-const char *_nl_current_default_domain attribute_hidden
+-     = _nl_default_default_domain;
+-#endif
+-
+-/* Contains the default location of the message catalogs.  */
+-#if defined __EMX__
+-extern const char _nl_default_dirname[];
+-#else
+-# ifdef _LIBC
+-extern const char _nl_default_dirname[];
+-libc_hidden_proto (_nl_default_dirname)
+-# endif
+-const char _nl_default_dirname[] = LOCALEDIR;
+-# ifdef _LIBC
+-libc_hidden_data_def (_nl_default_dirname)
+-# endif
+-#endif
+-
+-#ifndef IN_LIBGLOCALE
+-/* List with bindings of specific domains created by bindtextdomain()
+-   calls.  */
+-struct binding *_nl_domain_bindings;
+-#endif
+-
+-/* Prototypes for local functions.  */
+-static char *plural_lookup (struct loaded_l10nfile *domain,
+-			    unsigned long int n,
+-			    const char *translation, size_t translation_len)
+-     internal_function;
+-
+-#ifdef IN_LIBGLOCALE
+-static const char *guess_category_value (int category,
+-					 const char *categoryname,
+-					 const char *localename)
+-     internal_function;
+-#else
+-static const char *guess_category_value (int category,
+-					 const char *categoryname)
+-     internal_function;
+-#endif
+-
+-#ifdef _LIBC
+-# include "../locale/localeinfo.h"
+-# define category_to_name(category) \
+-  _nl_category_names.str + _nl_category_name_idxs[category]
+-#else
+-static const char *category_to_name (int category) internal_function;
+-#endif
+-#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE
+-static const char *get_output_charset (struct binding *domainbinding)
+-     internal_function;
+-#endif
+-
+-
+-/* For those loosing systems which don't have `alloca' we have to add
+-   some additional code emulating it.  */
+-#ifdef HAVE_ALLOCA
+-/* Nothing has to be done.  */
+-# define freea(p) /* nothing */
+-# define ADD_BLOCK(list, address) /* nothing */
+-# define FREE_BLOCKS(list) /* nothing */
+-#else
+-struct block_list
+-{
+-  void *address;
+-  struct block_list *next;
+-};
+-# define ADD_BLOCK(list, addr)						      \
+-  do {									      \
+-    struct block_list *newp = (struct block_list *) malloc (sizeof (*newp));  \
+-    /* If we cannot get a free block we cannot add the new element to	      \
+-       the list.  */							      \
+-    if (newp != NULL) {							      \
+-      newp->address = (addr);						      \
+-      newp->next = (list);						      \
+-      (list) = newp;							      \
+-    }									      \
+-  } while (0)
+-# define FREE_BLOCKS(list)						      \
+-  do {									      \
+-    while (list != NULL) {						      \
+-      struct block_list *old = list;					      \
+-      list = list->next;						      \
+-      free (old->address);						      \
+-      free (old);							      \
+-    }									      \
+-  } while (0)
+-# undef alloca
+-# define alloca(size) (malloc (size))
+-# define freea(p) free (p)
+-#endif	/* have alloca */
+-
+-
+-#ifdef _LIBC
+-/* List of blocks allocated for translations.  */
+-typedef struct transmem_list
+-{
+-  struct transmem_list *next;
+-  char data[ZERO];
+-} transmem_block_t;
+-static struct transmem_list *transmem_list;
+-#else
+-typedef unsigned char transmem_block_t;
+-#endif
+-
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define DCIGETTEXT __dcigettext
+-#else
+-# define DCIGETTEXT libintl_dcigettext
+-#endif
+-
+-/* Lock variable to protect the global data in the gettext implementation.  */
+-gl_rwlock_define_initialized (, _nl_state_lock attribute_hidden)
+-
+-/* Checking whether the binaries runs SUID must be done and glibc provides
+-   easier methods therefore we make a difference here.  */
+-#ifdef _LIBC
+-# define ENABLE_SECURE __libc_enable_secure
+-# define DETERMINE_SECURE
+-#else
+-# ifndef HAVE_GETUID
+-#  define getuid() 0
+-# endif
+-# ifndef HAVE_GETGID
+-#  define getgid() 0
+-# endif
+-# ifndef HAVE_GETEUID
+-#  define geteuid() getuid()
+-# endif
+-# ifndef HAVE_GETEGID
+-#  define getegid() getgid()
+-# endif
+-static int enable_secure;
+-# define ENABLE_SECURE (enable_secure == 1)
+-# define DETERMINE_SECURE \
+-  if (enable_secure == 0)						      \
+-    {									      \
+-      if (getuid () != geteuid () || getgid () != getegid ())		      \
+-	enable_secure = 1;						      \
+-      else								      \
+-	enable_secure = -1;						      \
+-    }
+-#endif
+-
+-/* Get the function to evaluate the plural expression.  */
+-#include "eval-plural.h"
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current
+-   CATEGORY locale and, if PLURAL is nonzero, search over string
+-   depending on the plural form determined by N.  */
+-#ifdef IN_LIBGLOCALE
+-char *
+-gl_dcigettext (const char *domainname,
+-	       const char *msgid1, const char *msgid2,
+-	       int plural, unsigned long int n,
+-	       int category,
+-	       const char *localename, const char *encoding)
+-#else
+-char *
+-DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
+-	    int plural, unsigned long int n, int category)
+-#endif
+-{
+-#ifndef HAVE_ALLOCA
+-  struct block_list *block_list = NULL;
+-#endif
+-  struct loaded_l10nfile *domain;
+-  struct binding *binding;
+-  const char *categoryname;
+-  const char *categoryvalue;
+-  const char *dirname;
+-  char *xdomainname;
+-  char *single_locale;
+-  char *retval;
+-  size_t retlen;
+-  int saved_errno;
+-  struct known_translation_t *search;
+-  struct known_translation_t **foundp = NULL;
+-  size_t msgid_len;
+-#if defined HAVE_PER_THREAD_LOCALE && !defined IN_LIBGLOCALE
+-  const char *localename;
+-#endif
+-  size_t domainname_len;
+-
+-  /* If no real MSGID is given return NULL.  */
+-  if (msgid1 == NULL)
+-    return NULL;
+-
+-#ifdef _LIBC
+-  if (category < 0 || category >= __LC_LAST || category == LC_ALL)
+-    /* Bogus.  */
+-    return (plural == 0
+-	    ? (char *) msgid1
+-	    /* Use the Germanic plural rule.  */
+-	    : n == 1 ? (char *) msgid1 : (char *) msgid2);
+-#endif
+-
+-  /* Preserve the `errno' value.  */
+-  saved_errno = errno;
+-
+-  gl_rwlock_rdlock (_nl_state_lock);
+-
+-  /* If DOMAINNAME is NULL, we are interested in the default domain.  If
+-     CATEGORY is not LC_MESSAGES this might not make much sense but the
+-     definition left this undefined.  */
+-  if (domainname == NULL)
+-    domainname = _nl_current_default_domain;
+-
+-  /* OS/2 specific: backward compatibility with older libintl versions  */
+-#ifdef LC_MESSAGES_COMPAT
+-  if (category == LC_MESSAGES_COMPAT)
+-    category = LC_MESSAGES;
+-#endif
+-
+-  msgid_len = strlen (msgid1) + 1;
+-
+-  /* Try to find the translation among those which we found at
+-     some time.  */
+-  search = (struct known_translation_t *)
+-	   alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
+-  memcpy (search->msgid, msgid1, msgid_len);
+-  search->domainname = domainname;
+-  search->category = category;
+-#ifdef HAVE_PER_THREAD_LOCALE
+-# ifndef IN_LIBGLOCALE
+-#  ifdef _LIBC
+-  localename = __current_locale_name (category);
+-#  else
+-#   if HAVE_NL_LOCALE_NAME
+-  /* NL_LOCALE_NAME is public glibc API introduced in glibc-2.4.  */
+-  localename = nl_langinfo (NL_LOCALE_NAME (category));
+-#   else
+-#    if HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS
+-  /* The __names field is not public glibc API and must therefore not be used
+-     in code that is installed in public locations.  */
+-  {
+-    locale_t thread_locale = uselocale (NULL);
+-    if (thread_locale != LC_GLOBAL_LOCALE)
+-      localename = thread_locale->__names[category];
+-    else
+-      localename = "";
+-  }
+-#    endif
+-#   endif
+-#  endif
+-# endif
+-  search->localename = localename;
+-# ifdef IN_LIBGLOCALE
+-  search->encoding = encoding;
+-# endif
+-
+-  /* Since tfind/tsearch manage a balanced tree, concurrent tfind and
+-     tsearch calls can be fatal.  */
+-  gl_rwlock_rdlock (tree_lock);
+-
+-  foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
+-
+-  gl_rwlock_unlock (tree_lock);
+-
+-  freea (search);
+-  if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
+-    {
+-      /* Now deal with plural.  */
+-      if (plural)
+-	retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
+-				(*foundp)->translation_length);
+-      else
+-	retval = (char *) (*foundp)->translation;
+-
+-      gl_rwlock_unlock (_nl_state_lock);
+-      __set_errno (saved_errno);
+-      return retval;
+-    }
+-#endif
+-
+-  /* See whether this is a SUID binary or not.  */
+-  DETERMINE_SECURE;
+-
+-  /* First find matching binding.  */
+-#ifdef IN_LIBGLOCALE
+-  /* We can use a trivial binding, since _nl_find_msg will ignore it anyway,
+-     and _nl_load_domain and _nl_find_domain just pass it through.  */
+-  binding = NULL;
+-  dirname = bindtextdomain (domainname, NULL);
+-#else
+-  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+-    {
+-      int compare = strcmp (domainname, binding->domainname);
+-      if (compare == 0)
+-	/* We found it!  */
+-	break;
+-      if (compare < 0)
+-	{
+-	  /* It is not in the list.  */
+-	  binding = NULL;
+-	  break;
+-	}
+-    }
+-
+-  if (binding == NULL)
+-    dirname = _nl_default_dirname;
+-  else
+-    {
+-      dirname = binding->dirname;
+-#endif
+-      if (!IS_ABSOLUTE_PATH (dirname))
+-	{
+-	  /* We have a relative path.  Make it absolute now.  */
+-	  size_t dirname_len = strlen (dirname) + 1;
+-	  size_t path_max;
+-	  char *resolved_dirname;
+-	  char *ret;
+-
+-	  path_max = (unsigned int) PATH_MAX;
+-	  path_max += 2;		/* The getcwd docs say to do this.  */
+-
+-	  for (;;)
+-	    {
+-	      resolved_dirname = (char *) alloca (path_max + dirname_len);
+-	      ADD_BLOCK (block_list, tmp_dirname);
+-
+-	      __set_errno (0);
+-	      ret = getcwd (resolved_dirname, path_max);
+-	      if (ret != NULL || errno != ERANGE)
+-		break;
+-
+-	      path_max += path_max / 2;
+-	      path_max += PATH_INCR;
+-	    }
+-
+-	  if (ret == NULL)
+-	    /* We cannot get the current working directory.  Don't signal an
+-	       error but simply return the default string.  */
+-	    goto return_untranslated;
+-
+-	  stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname);
+-	  dirname = resolved_dirname;
+-	}
+-#ifndef IN_LIBGLOCALE
+-    }
+-#endif
+-
+-  /* Now determine the symbolic name of CATEGORY and its value.  */
+-  categoryname = category_to_name (category);
+-#ifdef IN_LIBGLOCALE
+-  categoryvalue = guess_category_value (category, categoryname, localename);
+-#else
+-  categoryvalue = guess_category_value (category, categoryname);
+-#endif
+-
+-  domainname_len = strlen (domainname);
+-  xdomainname = (char *) alloca (strlen (categoryname)
+-				 + domainname_len + 5);
+-  ADD_BLOCK (block_list, xdomainname);
+-
+-  stpcpy ((char *) mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
+-			    domainname, domainname_len),
+-	  ".mo");
+-
+-  /* Creating working area.  */
+-  single_locale = (char *) alloca (strlen (categoryvalue) + 1);
+-  ADD_BLOCK (block_list, single_locale);
+-
+-
+-  /* Search for the given string.  This is a loop because we perhaps
+-     got an ordered list of languages to consider for the translation.  */
+-  while (1)
+-    {
+-      /* Make CATEGORYVALUE point to the next element of the list.  */
+-      while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
+-	++categoryvalue;
+-      if (categoryvalue[0] == '\0')
+-	{
+-	  /* The whole contents of CATEGORYVALUE has been searched but
+-	     no valid entry has been found.  We solve this situation
+-	     by implicitly appending a "C" entry, i.e. no translation
+-	     will take place.  */
+-	  single_locale[0] = 'C';
+-	  single_locale[1] = '\0';
+-	}
+-      else
+-	{
+-	  char *cp = single_locale;
+-	  while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
+-	    *cp++ = *categoryvalue++;
+-	  *cp = '\0';
+-
+-	  /* When this is a SUID binary we must not allow accessing files
+-	     outside the dedicated directories.  */
+-	  if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
+-	    /* Ingore this entry.  */
+-	    continue;
+-	}
+-
+-      /* If the current locale value is C (or POSIX) we don't load a
+-	 domain.  Return the MSGID.  */
+-      if (strcmp (single_locale, "C") == 0
+-	  || strcmp (single_locale, "POSIX") == 0)
+-	break;
+-
+-      /* Find structure describing the message catalog matching the
+-	 DOMAINNAME and CATEGORY.  */
+-      domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
+-
+-      if (domain != NULL)
+-	{
+-#if defined IN_LIBGLOCALE
+-	  retval = _nl_find_msg (domain, binding, encoding, msgid1, &retlen);
+-#else
+-	  retval = _nl_find_msg (domain, binding, msgid1, 1, &retlen);
+-#endif
+-
+-	  if (retval == NULL)
+-	    {
+-	      int cnt;
+-
+-	      for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
+-		{
+-#if defined IN_LIBGLOCALE
+-		  retval = _nl_find_msg (domain->successor[cnt], binding,
+-					 encoding, msgid1, &retlen);
+-#else
+-		  retval = _nl_find_msg (domain->successor[cnt], binding,
+-					 msgid1, 1, &retlen);
+-#endif
+-
+-		  if (retval != NULL)
+-		    {
+-		      domain = domain->successor[cnt];
+-		      break;
+-		    }
+-		}
+-	    }
+-
+-	  /* Returning -1 means that some resource problem exists
+-	     (likely memory) and that the strings could not be
+-	     converted.  Return the original strings.  */
+-	  if (__builtin_expect (retval == (char *) -1, 0))
+-	    break;
+-
+-	  if (retval != NULL)
+-	    {
+-	      /* Found the translation of MSGID1 in domain DOMAIN:
+-		 starting at RETVAL, RETLEN bytes.  */
+-	      FREE_BLOCKS (block_list);
+-	      if (foundp == NULL)
+-		{
+-		  /* Create a new entry and add it to the search tree.  */
+-		  size_t size;
+-		  struct known_translation_t *newp;
+-
+-		  size = offsetof (struct known_translation_t, msgid)
+-			 + msgid_len + domainname_len + 1;
+-#ifdef HAVE_PER_THREAD_LOCALE
+-		  size += strlen (localename) + 1;
+-#endif
+-		  newp = (struct known_translation_t *) malloc (size);
+-		  if (newp != NULL)
+-		    {
+-		      char *new_domainname;
+-#ifdef HAVE_PER_THREAD_LOCALE
+-		      char *new_localename;
+-#endif
+-
+-		      new_domainname =
+-			(char *) mempcpy (newp->msgid, msgid1, msgid_len);
+-		      memcpy (new_domainname, domainname, domainname_len + 1);
+-#ifdef HAVE_PER_THREAD_LOCALE
+-		      new_localename = new_domainname + domainname_len + 1;
+-		      strcpy (new_localename, localename);
+-#endif
+-		      newp->domainname = new_domainname;
+-		      newp->category = category;
+-#ifdef HAVE_PER_THREAD_LOCALE
+-		      newp->localename = new_localename;
+-#endif
+-#ifdef IN_LIBGLOCALE
+-		      newp->encoding = encoding;
+-#endif
+-		      newp->counter = _nl_msg_cat_cntr;
+-		      newp->domain = domain;
+-		      newp->translation = retval;
+-		      newp->translation_length = retlen;
+-
+-		      gl_rwlock_wrlock (tree_lock);
+-
+-		      /* Insert the entry in the search tree.  */
+-		      foundp = (struct known_translation_t **)
+-			tsearch (newp, &root, transcmp);
+-
+-		      gl_rwlock_unlock (tree_lock);
+-
+-		      if (foundp == NULL
+-			  || __builtin_expect (*foundp != newp, 0))
+-			/* The insert failed.  */
+-			free (newp);
+-		    }
+-		}
+-	      else
+-		{
+-		  /* We can update the existing entry.  */
+-		  (*foundp)->counter = _nl_msg_cat_cntr;
+-		  (*foundp)->domain = domain;
+-		  (*foundp)->translation = retval;
+-		  (*foundp)->translation_length = retlen;
+-		}
+-
+-	      __set_errno (saved_errno);
+-
+-	      /* Now deal with plural.  */
+-	      if (plural)
+-		retval = plural_lookup (domain, n, retval, retlen);
+-
+-	      gl_rwlock_unlock (_nl_state_lock);
+-	      return retval;
+-	    }
+-	}
+-    }
+-
+- return_untranslated:
+-  /* Return the untranslated MSGID.  */
+-  FREE_BLOCKS (block_list);
+-  gl_rwlock_unlock (_nl_state_lock);
+-#ifndef _LIBC
+-  if (!ENABLE_SECURE)
+-    {
+-      extern void _nl_log_untranslated (const char *logfilename,
+-					const char *domainname,
+-					const char *msgid1, const char *msgid2,
+-					int plural);
+-      const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");
+-
+-      if (logfilename != NULL && logfilename[0] != '\0')
+-	_nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural);
+-    }
+-#endif
+-  __set_errno (saved_errno);
+-  return (plural == 0
+-	  ? (char *) msgid1
+-	  /* Use the Germanic plural rule.  */
+-	  : n == 1 ? (char *) msgid1 : (char *) msgid2);
+-}
+-
+-
+-/* Look up the translation of msgid within DOMAIN_FILE and DOMAINBINDING.
+-   Return it if found.  Return NULL if not found or in case of a conversion
+-   failure (problem in the particular message catalog).  Return (char *) -1
+-   in case of a memory allocation failure during conversion (only if
+-   ENCODING != NULL resp. CONVERT == true).  */
+-char *
+-internal_function
+-#ifdef IN_LIBGLOCALE
+-_nl_find_msg (struct loaded_l10nfile *domain_file,
+-	      struct binding *domainbinding, const char *encoding,
+-	      const char *msgid,
+-	      size_t *lengthp)
+-#else
+-_nl_find_msg (struct loaded_l10nfile *domain_file,
+-	      struct binding *domainbinding,
+-	      const char *msgid, int convert,
+-	      size_t *lengthp)
+-#endif
+-{
+-  struct loaded_domain *domain;
+-  nls_uint32 nstrings;
+-  size_t act;
+-  char *result;
+-  size_t resultlen;
+-
+-  if (domain_file->decided <= 0)
+-    _nl_load_domain (domain_file, domainbinding);
+-
+-  if (domain_file->data == NULL)
+-    return NULL;
+-
+-  domain = (struct loaded_domain *) domain_file->data;
+-
+-  nstrings = domain->nstrings;
+-
+-  /* Locate the MSGID and its translation.  */
+-  if (domain->hash_tab != NULL)
+-    {
+-      /* Use the hashing table.  */
+-      nls_uint32 len = strlen (msgid);
+-      nls_uint32 hash_val = __hash_string (msgid);
+-      nls_uint32 idx = hash_val % domain->hash_size;
+-      nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+-
+-      while (1)
+-	{
+-	  nls_uint32 nstr =
+-	    W (domain->must_swap_hash_tab, domain->hash_tab[idx]);
+-
+-	  if (nstr == 0)
+-	    /* Hash table entry is empty.  */
+-	    return NULL;
+-
+-	  nstr--;
+-
+-	  /* Compare msgid with the original string at index nstr.
+-	     We compare the lengths with >=, not ==, because plural entries
+-	     are represented by strings with an embedded NUL.  */
+-	  if (nstr < nstrings
+-	      ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len
+-		&& (strcmp (msgid,
+-			    domain->data + W (domain->must_swap,
+-					      domain->orig_tab[nstr].offset))
+-		    == 0)
+-	      : domain->orig_sysdep_tab[nstr - nstrings].length > len
+-		&& (strcmp (msgid,
+-			    domain->orig_sysdep_tab[nstr - nstrings].pointer)
+-		    == 0))
+-	    {
+-	      act = nstr;
+-	      goto found;
+-	    }
+-
+-	  if (idx >= domain->hash_size - incr)
+-	    idx -= domain->hash_size - incr;
+-	  else
+-	    idx += incr;
+-	}
+-      /* NOTREACHED */
+-    }
+-  else
+-    {
+-      /* Try the default method:  binary search in the sorted array of
+-	 messages.  */
+-      size_t top, bottom;
+-
+-      bottom = 0;
+-      top = nstrings;
+-      while (bottom < top)
+-	{
+-	  int cmp_val;
+-
+-	  act = (bottom + top) / 2;
+-	  cmp_val = strcmp (msgid, (domain->data
+-				    + W (domain->must_swap,
+-					 domain->orig_tab[act].offset)));
+-	  if (cmp_val < 0)
+-	    top = act;
+-	  else if (cmp_val > 0)
+-	    bottom = act + 1;
+-	  else
+-	    goto found;
+-	}
+-      /* No translation was found.  */
+-      return NULL;
+-    }
+-
+- found:
+-  /* The translation was found at index ACT.  If we have to convert the
+-     string to use a different character set, this is the time.  */
+-  if (act < nstrings)
+-    {
+-      result = (char *)
+-	(domain->data + W (domain->must_swap, domain->trans_tab[act].offset));
+-      resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
+-    }
+-  else
+-    {
+-      result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer;
+-      resultlen = domain->trans_sysdep_tab[act - nstrings].length;
+-    }
+-
+-#if defined _LIBC || HAVE_ICONV
+-# ifdef IN_LIBGLOCALE
+-  if (encoding != NULL)
+-# else
+-  if (convert)
+-# endif
+-    {
+-      /* We are supposed to do a conversion.  */
+-# ifndef IN_LIBGLOCALE
+-      const char *encoding = get_output_charset (domainbinding);
+-# endif
+-      size_t nconversions;
+-      struct converted_domain *convd;
+-      size_t i;
+-
+-      /* Protect against reallocation of the table.  */
+-      gl_rwlock_rdlock (domain->conversions_lock);
+-
+-      /* Search whether a table with converted translations for this
+-	 encoding has already been allocated.  */
+-      nconversions = domain->nconversions;
+-      convd = NULL;
+-
+-      for (i = nconversions; i > 0; )
+-	{
+-	  i--;
+-	  if (strcmp (domain->conversions[i].encoding, encoding) == 0)
+-	    {
+-	      convd = &domain->conversions[i];
+-	      break;
+-	    }
+-	}
+-
+-      gl_rwlock_unlock (domain->conversions_lock);
+-
+-      if (convd == NULL)
+-	{
+-	  /* We have to allocate a new conversions table.  */
+-	  gl_rwlock_wrlock (domain->conversions_lock);
+-
+-	  /* Maybe in the meantime somebody added the translation.
+-	     Recheck.  */
+-	  for (i = nconversions; i > 0; )
+-	    {
+-	      i--;
+-	      if (strcmp (domain->conversions[i].encoding, encoding) == 0)
+-		{
+-		  convd = &domain->conversions[i];
+-		  goto found_convd;
+-		}
+-	    }
+-
+-	  {
+-	    /* Allocate a table for the converted translations for this
+-	       encoding.  */
+-	    struct converted_domain *new_conversions =
+-	      (struct converted_domain *)
+-	      (domain->conversions != NULL
+-	       ? realloc (domain->conversions,
+-			  (nconversions + 1) * sizeof (struct converted_domain))
+-	       : malloc ((nconversions + 1) * sizeof (struct converted_domain)));
+-
+-	    if (__builtin_expect (new_conversions == NULL, 0))
+-	      {
+-		/* Nothing we can do, no more memory.  We cannot use the
+-		   translation because it might be encoded incorrectly.  */
+-	      unlock_fail:
+-		gl_rwlock_unlock (domain->conversions_lock);
+-		return (char *) -1;
+-	      }
+-
+-	    domain->conversions = new_conversions;
+-
+-	    /* Copy the 'encoding' string to permanent storage.  */
+-	    encoding = strdup (encoding);
+-	    if (__builtin_expect (encoding == NULL, 0))
+-	      /* Nothing we can do, no more memory.  We cannot use the
+-		 translation because it might be encoded incorrectly.  */
+-	      goto unlock_fail;
+-
+-	    convd = &new_conversions[nconversions];
+-	    convd->encoding = encoding;
+-
+-	    /* Find out about the character set the file is encoded with.
+-	       This can be found (in textual form) in the entry "".  If this
+-	       entry does not exist or if this does not contain the 'charset='
+-	       information, we will assume the charset matches the one the
+-	       current locale and we don't have to perform any conversion.  */
+-# ifdef _LIBC
+-	    convd->conv = (__gconv_t) -1;
+-# else
+-#  if HAVE_ICONV
+-	    convd->conv = (iconv_t) -1;
+-#  endif
+-# endif
+-	    {
+-	      char *nullentry;
+-	      size_t nullentrylen;
+-
+-	      /* Get the header entry.  This is a recursion, but it doesn't
+-		 reallocate domain->conversions because we pass
+-		 encoding = NULL or convert = 0, respectively.  */
+-	      nullentry =
+-# ifdef IN_LIBGLOCALE
+-		_nl_find_msg (domain_file, domainbinding, NULL, "",
+-			      &nullentrylen);
+-# else
+-		_nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
+-# endif
+-
+-	      if (nullentry != NULL)
+-		{
+-		  const char *charsetstr;
+-
+-		  charsetstr = strstr (nullentry, "charset=");
+-		  if (charsetstr != NULL)
+-		    {
+-		      size_t len;
+-		      char *charset;
+-		      const char *outcharset;
+-
+-		      charsetstr += strlen ("charset=");
+-		      len = strcspn (charsetstr, " \t\n");
+-
+-		      charset = (char *) alloca (len + 1);
+-# if defined _LIBC || HAVE_MEMPCPY
+-		      *((char *) mempcpy (charset, charsetstr, len)) = '\0';
+-# else
+-		      memcpy (charset, charsetstr, len);
+-		      charset[len] = '\0';
+-# endif
+-
+-		      outcharset = encoding;
+-
+-# ifdef _LIBC
+-		      /* We always want to use transliteration.  */
+-		      outcharset = norm_add_slashes (outcharset, "TRANSLIT");
+-		      charset = norm_add_slashes (charset, "");
+-		      int r = __gconv_open (outcharset, charset, &convd->conv,
+-					    GCONV_AVOID_NOCONV);
+-		      if (__builtin_expect (r != __GCONV_OK, 0))
+-			{
+-			  /* If the output encoding is the same there is
+-			     nothing to do.  Otherwise do not use the
+-			     translation at all.  */
+-			  if (__builtin_expect (r != __GCONV_NULCONV, 1))
+-			    {
+-			      gl_rwlock_unlock (domain->conversions_lock);
+-			      free ((char *) encoding);
+-			      return NULL;
+-			    }
+-
+-			  convd->conv = (__gconv_t) -1;
+-			}
+-# else
+-#  if HAVE_ICONV
+-		      /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
+-			 we want to use transliteration.  */
+-#   if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
+-       || _LIBICONV_VERSION >= 0x0105
+-		      if (strchr (outcharset, '/') == NULL)
+-			{
+-			  char *tmp;
+-
+-			  len = strlen (outcharset);
+-			  tmp = (char *) alloca (len + 10 + 1);
+-			  memcpy (tmp, outcharset, len);
+-			  memcpy (tmp + len, "//TRANSLIT", 10 + 1);
+-			  outcharset = tmp;
+-
+-			  convd->conv = iconv_open (outcharset, charset);
+-
+-			  freea (outcharset);
+-			}
+-		      else
+-#   endif
+-			convd->conv = iconv_open (outcharset, charset);
+-#  endif
+-# endif
+-
+-		      freea (charset);
+-		    }
+-		}
+-	    }
+-	    convd->conv_tab = NULL;
+-	    /* Here domain->conversions is still == new_conversions.  */
+-	    domain->nconversions++;
+-	  }
+-
+-	found_convd:
+-	  gl_rwlock_unlock (domain->conversions_lock);
+-	}
+-
+-      if (
+-# ifdef _LIBC
+-	  convd->conv != (__gconv_t) -1
+-# else
+-#  if HAVE_ICONV
+-	  convd->conv != (iconv_t) -1
+-#  endif
+-# endif
+-	  )
+-	{
+-	  /* We are supposed to do a conversion.  First allocate an
+-	     appropriate table with the same structure as the table
+-	     of translations in the file, where we can put the pointers
+-	     to the converted strings in.
+-	     There is a slight complication with plural entries.  They
+-	     are represented by consecutive NUL terminated strings.  We
+-	     handle this case by converting RESULTLEN bytes, including
+-	     NULs.  */
+-
+-	  if (convd->conv_tab == NULL
+-	      && ((convd->conv_tab =
+-		    (char **) calloc (nstrings + domain->n_sysdep_strings,
+-				      sizeof (char *)))
+-		  == NULL))
+-	    /* Mark that we didn't succeed allocating a table.  */
+-	    convd->conv_tab = (char **) -1;
+-
+-	  if (__builtin_expect (convd->conv_tab == (char **) -1, 0))
+-	    /* Nothing we can do, no more memory.  We cannot use the
+-	       translation because it might be encoded incorrectly.  */
+-	    return (char *) -1;
+-
+-	  if (convd->conv_tab[act] == NULL)
+-	    {
+-	      /* We haven't used this string so far, so it is not
+-		 translated yet.  Do this now.  */
+-	      /* We use a bit more efficient memory handling.
+-		 We allocate always larger blocks which get used over
+-		 time.  This is faster than many small allocations.   */
+-	      __libc_lock_define_initialized (static, lock)
+-# define INITIAL_BLOCK_SIZE	4080
+-	      static unsigned char *freemem;
+-	      static size_t freemem_size;
+-
+-	      const unsigned char *inbuf;
+-	      unsigned char *outbuf;
+-	      int malloc_count;
+-# ifndef _LIBC
+-	      transmem_block_t *transmem_list = NULL;
+-# endif
+-
+-	      __libc_lock_lock (lock);
+-
+-	      inbuf = (const unsigned char *) result;
+-	      outbuf = freemem + sizeof (size_t);
+-
+-	      malloc_count = 0;
+-	      while (1)
+-		{
+-		  transmem_block_t *newmem;
+-# ifdef _LIBC
+-		  size_t non_reversible;
+-		  int res;
+-
+-		  if (freemem_size < sizeof (size_t))
+-		    goto resize_freemem;
+-
+-		  res = __gconv (convd->conv,
+-				 &inbuf, inbuf + resultlen,
+-				 &outbuf,
+-				 outbuf + freemem_size - sizeof (size_t),
+-				 &non_reversible);
+-
+-		  if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
+-		    break;
+-
+-		  if (res != __GCONV_FULL_OUTPUT)
+-		    {
+-		      /* We should not use the translation at all, it
+-			 is incorrectly encoded.  */
+-		      __libc_lock_unlock (lock);
+-		      return NULL;
+-		    }
+-
+-		  inbuf = (const unsigned char *) result;
+-# else
+-#  if HAVE_ICONV
+-		  const char *inptr = (const char *) inbuf;
+-		  size_t inleft = resultlen;
+-		  char *outptr = (char *) outbuf;
+-		  size_t outleft;
+-
+-		  if (freemem_size < sizeof (size_t))
+-		    goto resize_freemem;
+-
+-		  outleft = freemem_size - sizeof (size_t);
+-		  if (iconv (convd->conv,
+-			     (ICONV_CONST char **) &inptr, &inleft,
+-			     &outptr, &outleft)
+-		      != (size_t) (-1))
+-		    {
+-		      outbuf = (unsigned char *) outptr;
+-		      break;
+-		    }
+-		  if (errno != E2BIG)
+-		    {
+-		      __libc_lock_unlock (lock);
+-		      return NULL;
+-		    }
+-#  endif
+-# endif
+-
+-		resize_freemem:
+-		  /* We must allocate a new buffer or resize the old one.  */
+-		  if (malloc_count > 0)
+-		    {
+-		      ++malloc_count;
+-		      freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
+-		      newmem = (transmem_block_t *) realloc (transmem_list,
+-							     freemem_size);
+-# ifdef _LIBC
+-		      if (newmem != NULL)
+-			transmem_list = transmem_list->next;
+-		      else
+-			{
+-			  struct transmem_list *old = transmem_list;
+-
+-			  transmem_list = transmem_list->next;
+-			  free (old);
+-			}
+-# endif
+-		    }
+-		  else
+-		    {
+-		      malloc_count = 1;
+-		      freemem_size = INITIAL_BLOCK_SIZE;
+-		      newmem = (transmem_block_t *) malloc (freemem_size);
+-		    }
+-		  if (__builtin_expect (newmem == NULL, 0))
+-		    {
+-		      freemem = NULL;
+-		      freemem_size = 0;
+-		      __libc_lock_unlock (lock);
+-		      return (char *) -1;
+-		    }
+-
+-# ifdef _LIBC
+-		  /* Add the block to the list of blocks we have to free
+-		     at some point.  */
+-		  newmem->next = transmem_list;
+-		  transmem_list = newmem;
+-
+-		  freemem = (unsigned char *) newmem->data;
+-		  freemem_size -= offsetof (struct transmem_list, data);
+-# else
+-		  transmem_list = newmem;
+-		  freemem = newmem;
+-# endif
+-
+-		  outbuf = freemem + sizeof (size_t);
+-		}
+-
+-	      /* We have now in our buffer a converted string.  Put this
+-		 into the table of conversions.  */
+-	      *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
+-	      convd->conv_tab[act] = (char *) freemem;
+-	      /* Shrink freemem, but keep it aligned.  */
+-	      freemem_size -= outbuf - freemem;
+-	      freemem = outbuf;
+-	      freemem += freemem_size & (alignof (size_t) - 1);
+-	      freemem_size = freemem_size & ~ (alignof (size_t) - 1);
+-
+-	      __libc_lock_unlock (lock);
+-	    }
+-
+-	  /* Now convd->conv_tab[act] contains the translation of all
+-	     the plural variants.  */
+-	  result = convd->conv_tab[act] + sizeof (size_t);
+-	  resultlen = *(size_t *) convd->conv_tab[act];
+-	}
+-    }
+-
+-  /* The result string is converted.  */
+-
+-#endif /* _LIBC || HAVE_ICONV */
+-
+-  *lengthp = resultlen;
+-  return result;
+-}
+-
+-
+-/* Look up a plural variant.  */
+-static char *
+-internal_function
+-plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
+-	       const char *translation, size_t translation_len)
+-{
+-  struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
+-  unsigned long int index;
+-  const char *p;
+-
+-  index = plural_eval (domaindata->plural, n);
+-  if (index >= domaindata->nplurals)
+-    /* This should never happen.  It means the plural expression and the
+-       given maximum value do not match.  */
+-    index = 0;
+-
+-  /* Skip INDEX strings at TRANSLATION.  */
+-  p = translation;
+-  while (index-- > 0)
+-    {
+-#ifdef _LIBC
+-      p = __rawmemchr (p, '\0');
+-#else
+-      p = strchr (p, '\0');
+-#endif
+-      /* And skip over the NUL byte.  */
+-      p++;
+-
+-      if (p >= translation + translation_len)
+-	/* This should never happen.  It means the plural expression
+-	   evaluated to a value larger than the number of variants
+-	   available for MSGID1.  */
+-	return (char *) translation;
+-    }
+-  return (char *) p;
+-}
+-
+-#ifndef _LIBC
+-/* Return string representation of locale CATEGORY.  */
+-static const char *
+-internal_function
+-category_to_name (int category)
+-{
+-  const char *retval;
+-
+-  switch (category)
+-  {
+-#ifdef LC_COLLATE
+-  case LC_COLLATE:
+-    retval = "LC_COLLATE";
+-    break;
+-#endif
+-#ifdef LC_CTYPE
+-  case LC_CTYPE:
+-    retval = "LC_CTYPE";
+-    break;
+-#endif
+-#ifdef LC_MONETARY
+-  case LC_MONETARY:
+-    retval = "LC_MONETARY";
+-    break;
+-#endif
+-#ifdef LC_NUMERIC
+-  case LC_NUMERIC:
+-    retval = "LC_NUMERIC";
+-    break;
+-#endif
+-#ifdef LC_TIME
+-  case LC_TIME:
+-    retval = "LC_TIME";
+-    break;
+-#endif
+-#ifdef LC_MESSAGES
+-  case LC_MESSAGES:
+-    retval = "LC_MESSAGES";
+-    break;
+-#endif
+-#ifdef LC_RESPONSE
+-  case LC_RESPONSE:
+-    retval = "LC_RESPONSE";
+-    break;
+-#endif
+-#ifdef LC_ALL
+-  case LC_ALL:
+-    /* This might not make sense but is perhaps better than any other
+-       value.  */
+-    retval = "LC_ALL";
+-    break;
+-#endif
+-  default:
+-    /* If you have a better idea for a default value let me know.  */
+-    retval = "LC_XXX";
+-  }
+-
+-  return retval;
+-}
+-#endif
+-
+-/* Guess value of current locale from value of the environment variables
+-   or system-dependent defaults.  */
+-static const char *
+-internal_function
+-#ifdef IN_LIBGLOCALE
+-guess_category_value (int category, const char *categoryname,
+-		      const char *locale)
+-
+-#else
+-guess_category_value (int category, const char *categoryname)
+-#endif
+-{
+-  const char *language;
+-#ifndef IN_LIBGLOCALE
+-  const char *locale;
+-# ifndef _LIBC
+-  const char *language_default;
+-  int locale_defaulted;
+-# endif
+-#endif
+-
+-  /* We use the settings in the following order:
+-     1. The value of the environment variable 'LANGUAGE'.  This is a GNU
+-        extension.  Its value can be a colon-separated list of locale names.
+-     2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'.
+-        More precisely, the first among these that is set to a non-empty value.
+-        This is how POSIX specifies it.  The value is a single locale name.
+-     3. A system-dependent preference list of languages.  Its value can be a
+-        colon-separated list of locale names.
+-     4. A system-dependent default locale name.
+-     This way:
+-       - System-dependent settings can be overridden by environment variables.
+-       - If the system provides both a list of languages and a default locale,
+-         the former is used.  */
+-
+-#ifndef IN_LIBGLOCALE
+-  /* Fetch the locale name, through the POSIX method of looking to `LC_ALL',
+-     `LC_xxx', and `LANG'.  On some systems this can be done by the
+-     `setlocale' function itself.  */
+-# ifdef _LIBC
+-  locale = __current_locale_name (category);
+-# else
+-#  if HAVE_STRUCT___LOCALE_STRUCT___NAMES && defined USE_IN_GETTEXT_TESTS
+-  /* The __names field is not public glibc API and must therefore not be used
+-     in code that is installed in public locations.  */
+-  locale_t thread_locale = uselocale (NULL);
+-  if (thread_locale != LC_GLOBAL_LOCALE)
+-    {
+-      locale = thread_locale->__names[category];
+-      locale_defaulted = 0;
+-    }
+-  else
+-#  endif
+-    {
+-      locale = _nl_locale_name_posix (category, categoryname);
+-      locale_defaulted = 0;
+-      if (locale == NULL)
+-	{
+-	  locale = _nl_locale_name_default ();
+-	  locale_defaulted = 1;
+-	}
+-    }
+-# endif
+-#endif
+-
+-  /* Ignore LANGUAGE and its system-dependent analogon if the locale is set
+-     to "C" because
+-     1. "C" locale usually uses the ASCII encoding, and most international
+-	messages use non-ASCII characters. These characters get displayed
+-	as question marks (if using glibc's iconv()) or as invalid 8-bit
+-	characters (because other iconv()s refuse to convert most non-ASCII
+-	characters to ASCII). In any case, the output is ugly.
+-     2. The precise output of some programs in the "C" locale is specified
+-	by POSIX and should not depend on environment variables like
+-	"LANGUAGE" or system-dependent information.  We allow such programs
+-        to use gettext().  */
+-  if (strcmp (locale, "C") == 0)
+-    return locale;
+-
+-  /* The highest priority value is the value of the 'LANGUAGE' environment
+-     variable.  */
+-  language = getenv ("LANGUAGE");
+-  if (language != NULL && language[0] != '\0')
+-    return language;
+-#if !defined IN_LIBGLOCALE && !defined _LIBC
+-  /* The next priority value is the locale name, if not defaulted.  */
+-  if (locale_defaulted)
+-    {
+-      /* The next priority value is the default language preferences list. */
+-      language_default = _nl_language_preferences_default ();
+-      if (language_default != NULL)
+-        return language_default;
+-    }
+-  /* The least priority value is the locale name, if defaulted.  */
+-#endif
+-  return locale;
+-}
+-
+-#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE
+-/* Returns the output charset.  */
+-static const char *
+-internal_function
+-get_output_charset (struct binding *domainbinding)
+-{
+-  /* The output charset should normally be determined by the locale.  But
+-     sometimes the locale is not used or not correctly set up, so we provide
+-     a possibility for the user to override this: the OUTPUT_CHARSET
+-     environment variable.  Moreover, the value specified through
+-     bind_textdomain_codeset overrides both.  */
+-  if (domainbinding != NULL && domainbinding->codeset != NULL)
+-    return domainbinding->codeset;
+-  else
+-    {
+-      /* For speed reasons, we look at the value of OUTPUT_CHARSET only
+-	 once.  This is a user variable that is not supposed to change
+-	 during a program run.  */
+-      static char *output_charset_cache;
+-      static int output_charset_cached;
+-
+-      if (!output_charset_cached)
+-	{
+-	  const char *value = getenv ("OUTPUT_CHARSET");
+-
+-	  if (value != NULL && value[0] != '\0')
+-	    {
+-	      size_t len = strlen (value) + 1;
+-	      char *value_copy = (char *) malloc (len);
+-
+-	      if (value_copy != NULL)
+-		memcpy (value_copy, value, len);
+-	      output_charset_cache = value_copy;
+-	    }
+-	  output_charset_cached = 1;
+-	}
+-
+-      if (output_charset_cache != NULL)
+-	return output_charset_cache;
+-      else
+-	{
+-# ifdef _LIBC
+-	  return _NL_CURRENT (LC_CTYPE, CODESET);
+-# else
+-#  if HAVE_ICONV
+-	  return locale_charset ();
+-#  endif
+-# endif
+-	}
+-    }
+-}
+-#endif
+-
+-/* @@ begin of epilog @@ */
+-
+-/* We don't want libintl.a to depend on any other library.  So we
+-   avoid the non-standard function stpcpy.  In GNU C Library this
+-   function is available, though.  Also allow the symbol HAVE_STPCPY
+-   to be defined.  */
+-#if !_LIBC && !HAVE_STPCPY
+-static char *
+-stpcpy (char *dest, const char *src)
+-{
+-  while ((*dest++ = *src++) != '\0')
+-    /* Do nothing. */ ;
+-  return dest - 1;
+-}
+-#endif
+-
+-#if !_LIBC && !HAVE_MEMPCPY
+-static void *
+-mempcpy (void *dest, const void *src, size_t n)
+-{
+-  return (void *) ((char *) memcpy (dest, src, n) + n);
+-}
+-#endif
+-
+-#if !_LIBC && !HAVE_TSEARCH
+-# include "tsearch.c"
+-#endif
+-
+-
+-#ifdef _LIBC
+-/* If we want to free all resources we have to do some work at
+-   program's end.  */
+-libc_freeres_fn (free_mem)
+-{
+-  void *old;
+-
+-  while (_nl_domain_bindings != NULL)
+-    {
+-      struct binding *oldp = _nl_domain_bindings;
+-      _nl_domain_bindings = _nl_domain_bindings->next;
+-      if (oldp->dirname != _nl_default_dirname)
+-	/* Yes, this is a pointer comparison.  */
+-	free (oldp->dirname);
+-      free (oldp->codeset);
+-      free (oldp);
+-    }
+-
+-  if (_nl_current_default_domain != _nl_default_default_domain)
+-    /* Yes, again a pointer comparison.  */
+-    free ((char *) _nl_current_default_domain);
+-
+-  /* Remove the search tree with the known translations.  */
+-  __tdestroy (root, free);
+-  root = NULL;
+-
+-  while (transmem_list != NULL)
+-    {
+-      old = transmem_list;
+-      transmem_list = transmem_list->next;
+-      free (old);
+-    }
+-}
+-#endif
+--- a/intl/dcngettext.c
++++ /dev/null
+@@ -1,57 +0,0 @@
+-/* Implementation of the dcngettext(3) function.
+-   Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define DCNGETTEXT __dcngettext
+-# define DCIGETTEXT __dcigettext
+-#else
+-# define DCNGETTEXT libintl_dcngettext
+-# define DCIGETTEXT libintl_dcigettext
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+-   locale.  */
+-char *
+-DCNGETTEXT (const char *domainname,
+-	    const char *msgid1, const char *msgid2, unsigned long int n,
+-	    int category)
+-{
+-  return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-weak_alias (__dcngettext, dcngettext);
+-#endif
+--- a/intl/dgettext.c
++++ /dev/null
+@@ -1,58 +0,0 @@
+-/* Implementation of the dgettext(3) function.
+-   Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "gettextP.h"
+-
+-#include <locale.h>
+-
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define DGETTEXT __dgettext
+-# define DCGETTEXT INTUSE(__dcgettext)
+-#else
+-# define DGETTEXT libintl_dgettext
+-# define DCGETTEXT libintl_dcgettext
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog of the current
+-   LC_MESSAGES locale.  */
+-char *
+-DGETTEXT (const char *domainname, const char *msgid)
+-{
+-  return DCGETTEXT (domainname, msgid, LC_MESSAGES);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-weak_alias (__dgettext, dgettext);
+-#endif
+--- a/intl/dngettext.c
++++ /dev/null
+@@ -1,59 +0,0 @@
+-/* Implementation of the dngettext(3) function.
+-   Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "gettextP.h"
+-
+-#include <locale.h>
+-
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define DNGETTEXT __dngettext
+-# define DCNGETTEXT __dcngettext
+-#else
+-# define DNGETTEXT libintl_dngettext
+-# define DCNGETTEXT libintl_dcngettext
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog of the current
+-   LC_MESSAGES locale and skip message according to the plural form.  */
+-char *
+-DNGETTEXT (const char *domainname,
+-	   const char *msgid1, const char *msgid2, unsigned long int n)
+-{
+-  return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-weak_alias (__dngettext, dngettext);
+-#endif
+--- a/intl/eval-plural.h
++++ /dev/null
+@@ -1,108 +0,0 @@
+-/* Plural expression evaluation.
+-   Copyright (C) 2000-2003, 2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef STATIC
+-#define STATIC static
+-#endif
+-
+-/* Evaluate the plural expression and return an index value.  */
+-STATIC
+-unsigned long int
+-internal_function
+-plural_eval (const struct expression *pexp, unsigned long int n)
+-{
+-  switch (pexp->nargs)
+-    {
+-    case 0:
+-      switch (pexp->operation)
+-	{
+-	case var:
+-	  return n;
+-	case num:
+-	  return pexp->val.num;
+-	default:
+-	  break;
+-	}
+-      /* NOTREACHED */
+-      break;
+-    case 1:
+-      {
+-	/* pexp->operation must be lnot.  */
+-	unsigned long int arg = plural_eval (pexp->val.args[0], n);
+-	return ! arg;
+-      }
+-    case 2:
+-      {
+-	unsigned long int leftarg = plural_eval (pexp->val.args[0], n);
+-	if (pexp->operation == lor)
+-	  return leftarg || plural_eval (pexp->val.args[1], n);
+-	else if (pexp->operation == land)
+-	  return leftarg && plural_eval (pexp->val.args[1], n);
+-	else
+-	  {
+-	    unsigned long int rightarg = plural_eval (pexp->val.args[1], n);
+-
+-	    switch (pexp->operation)
+-	      {
+-	      case mult:
+-		return leftarg * rightarg;
+-	      case divide:
+-#if !INTDIV0_RAISES_SIGFPE
+-		if (rightarg == 0)
+-		  raise (SIGFPE);
+-#endif
+-		return leftarg / rightarg;
+-	      case module:
+-#if !INTDIV0_RAISES_SIGFPE
+-		if (rightarg == 0)
+-		  raise (SIGFPE);
+-#endif
+-		return leftarg % rightarg;
+-	      case plus:
+-		return leftarg + rightarg;
+-	      case minus:
+-		return leftarg - rightarg;
+-	      case less_than:
+-		return leftarg < rightarg;
+-	      case greater_than:
+-		return leftarg > rightarg;
+-	      case less_or_equal:
+-		return leftarg <= rightarg;
+-	      case greater_or_equal:
+-		return leftarg >= rightarg;
+-	      case equal:
+-		return leftarg == rightarg;
+-	      case not_equal:
+-		return leftarg != rightarg;
+-	      default:
+-		break;
+-	      }
+-	  }
+-	/* NOTREACHED */
+-	break;
+-      }
+-    case 3:
+-      {
+-	/* pexp->operation must be qmop.  */
+-	unsigned long int boolarg = plural_eval (pexp->val.args[0], n);
+-	return plural_eval (pexp->val.args[boolarg ? 1 : 2], n);
+-      }
+-    }
+-  /* NOTREACHED */
+-  return 0;
+-}
+--- a/intl/explodename.c
++++ /dev/null
+@@ -1,135 +0,0 @@
+-/* Copyright (C) 1995-1998, 2000-2001, 2003, 2005, 2007 Free Software Foundation, Inc.
+-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdlib.h>
+-#include <string.h>
+-#include <sys/types.h>
+-
+-#include "loadinfo.h"
+-
+-/* On some strange systems still no definition of NULL is found.  Sigh!  */
+-#ifndef NULL
+-# if defined __STDC__ && __STDC__
+-#  define NULL ((void *) 0)
+-# else
+-#  define NULL 0
+-# endif
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Split a locale name NAME into a leading language part and all the
+-   rest.  Return a pointer to the first character after the language,
+-   i.e. to the first byte of the rest.  */
+-static char *_nl_find_language (const char *name);
+-
+-static char *
+-_nl_find_language (const char *name)
+-{
+-  while (name[0] != '\0' && name[0] != '_' && name[0] != '@' && name[0] != '.')
+-    ++name;
+-
+-  return (char *) name;
+-}
+-
+-
+-int
+-_nl_explode_name (char *name,
+-		  const char **language, const char **modifier,
+-		  const char **territory, const char **codeset,
+-		  const char **normalized_codeset)
+-{
+-  char *cp;
+-  int mask;
+-
+-  *modifier = NULL;
+-  *territory = NULL;
+-  *codeset = NULL;
+-  *normalized_codeset = NULL;
+-
+-  /* Now we determine the single parts of the locale name.  First
+-     look for the language.  Termination symbols are `_', '.', and `@'.  */
+-  mask = 0;
+-  *language = cp = name;
+-  cp = _nl_find_language (*language);
+-
+-  if (*language == cp)
+-    /* This does not make sense: language has to be specified.  Use
+-       this entry as it is without exploding.  Perhaps it is an alias.  */
+-    cp = strchr (*language, '\0');
+-  else
+-    {
+-      if (cp[0] == '_')
+-	{
+-	  /* Next is the territory.  */
+-	  cp[0] = '\0';
+-	  *territory = ++cp;
+-
+-	  while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@')
+-	    ++cp;
+-
+-	  mask |= XPG_TERRITORY;
+-	}
+-
+-      if (cp[0] == '.')
+-	{
+-	  /* Next is the codeset.  */
+-	  cp[0] = '\0';
+-	  *codeset = ++cp;
+-
+-	  while (cp[0] != '\0' && cp[0] != '@')
+-	    ++cp;
+-
+-	  mask |= XPG_CODESET;
+-
+-	  if (*codeset != cp && (*codeset)[0] != '\0')
+-	    {
+-	      *normalized_codeset = _nl_normalize_codeset (*codeset,
+-							   cp - *codeset);
+-	      if (*normalized_codeset == NULL)
+-		return -1;
+-	      else if (strcmp (*codeset, *normalized_codeset) == 0)
+-		free ((char *) *normalized_codeset);
+-	      else
+-		mask |= XPG_NORM_CODESET;
+-	    }
+-	}
+-    }
+-
+-  if (cp[0] == '@')
+-    {
+-      /* Next is the modifier.  */
+-      cp[0] = '\0';
+-      *modifier = ++cp;
+-
+-      if (cp[0] != '\0')
+-	mask |= XPG_MODIFIER;
+-    }
+-
+-  if (*territory != NULL && (*territory)[0] == '\0')
+-    mask &= ~XPG_TERRITORY;
+-
+-  if (*codeset != NULL && (*codeset)[0] == '\0')
+-    mask &= ~XPG_CODESET;
+-
+-  return mask;
+-}
+--- a/intl/export.h
++++ /dev/null
+@@ -1,6 +0,0 @@
+-
+-#if @HAVE_VISIBILITY@ && BUILDING_LIBINTL
+-#define LIBINTL_DLL_EXPORTED __attribute__((__visibility__("default")))
+-#else
+-#define LIBINTL_DLL_EXPORTED
+-#endif
+--- a/intl/finddomain.c
++++ /dev/null
+@@ -1,212 +0,0 @@
+-/* Handle list of needed message catalogs
+-   Copyright (C) 1995-1999, 2000-2001, 2003-2007 Free Software Foundation, Inc.
+-   Written by Ulrich Drepper <drepper@gnu.org>, 1995.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdio.h>
+-#include <sys/types.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#if defined HAVE_UNISTD_H || defined _LIBC
+-# include <unistd.h>
+-#endif
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-# define gl_rwlock_define_initialized __libc_rwlock_define_initialized
+-# define gl_rwlock_rdlock __libc_rwlock_rdlock
+-# define gl_rwlock_wrlock __libc_rwlock_wrlock
+-# define gl_rwlock_unlock __libc_rwlock_unlock
+-#else
+-# include "lock.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-/* List of already loaded domains.  */
+-static struct loaded_l10nfile *_nl_loaded_domains;
+-
+-
+-/* Return a data structure describing the message catalog described by
+-   the DOMAINNAME and CATEGORY parameters with respect to the currently
+-   established bindings.  */
+-struct loaded_l10nfile *
+-internal_function
+-_nl_find_domain (const char *dirname, char *locale,
+-		 const char *domainname, struct binding *domainbinding)
+-{
+-  struct loaded_l10nfile *retval;
+-  const char *language;
+-  const char *modifier;
+-  const char *territory;
+-  const char *codeset;
+-  const char *normalized_codeset;
+-  const char *alias_value;
+-  int mask;
+-
+-  /* LOCALE can consist of up to four recognized parts for the XPG syntax:
+-
+-		language[_territory][.codeset][@modifier]
+-
+-     Beside the first part all of them are allowed to be missing.  If
+-     the full specified locale is not found, the less specific one are
+-     looked for.  The various parts will be stripped off according to
+-     the following order:
+-		(1) codeset
+-		(2) normalized codeset
+-		(3) territory
+-		(4) modifier
+-   */
+-
+-  /* We need to protect modifying the _NL_LOADED_DOMAINS data.  */
+-  gl_rwlock_define_initialized (static, lock);
+-  gl_rwlock_rdlock (lock);
+-
+-  /* If we have already tested for this locale entry there has to
+-     be one data set in the list of loaded domains.  */
+-  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+-			       strlen (dirname) + 1, 0, locale, NULL, NULL,
+-			       NULL, NULL, domainname, 0);
+-
+-  gl_rwlock_unlock (lock);
+-
+-  if (retval != NULL)
+-    {
+-      /* We know something about this locale.  */
+-      int cnt;
+-
+-      if (retval->decided <= 0)
+-	_nl_load_domain (retval, domainbinding);
+-
+-      if (retval->data != NULL)
+-	return retval;
+-
+-      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+-	{
+-	  if (retval->successor[cnt]->decided <= 0)
+-	    _nl_load_domain (retval->successor[cnt], domainbinding);
+-
+-	  if (retval->successor[cnt]->data != NULL)
+-	    break;
+-	}
+-
+-      return retval;
+-      /* NOTREACHED */
+-    }
+-
+-  /* See whether the locale value is an alias.  If yes its value
+-     *overwrites* the alias name.  No test for the original value is
+-     done.  */
+-  alias_value = _nl_expand_alias (locale);
+-  if (alias_value != NULL)
+-    {
+-#if defined _LIBC || defined HAVE_STRDUP
+-      locale = strdup (alias_value);
+-      if (locale == NULL)
+-	return NULL;
+-#else
+-      size_t len = strlen (alias_value) + 1;
+-      locale = (char *) malloc (len);
+-      if (locale == NULL)
+-	return NULL;
+-
+-      memcpy (locale, alias_value, len);
+-#endif
+-    }
+-
+-  /* Now we determine the single parts of the locale name.  First
+-     look for the language.  Termination symbols are `_', '.', and `@'.  */
+-  mask = _nl_explode_name (locale, &language, &modifier, &territory,
+-			   &codeset, &normalized_codeset);
+-  if (mask == -1)
+-    /* This means we are out of core.  */
+-    return NULL;
+-
+-  /* We need to protect modifying the _NL_LOADED_DOMAINS data.  */
+-  gl_rwlock_wrlock (lock);
+-
+-  /* Create all possible locale entries which might be interested in
+-     generalization.  */
+-  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+-			       strlen (dirname) + 1, mask, language, territory,
+-			       codeset, normalized_codeset, modifier,
+-			       domainname, 1);
+-
+-  gl_rwlock_unlock (lock);
+-
+-  if (retval == NULL)
+-    /* This means we are out of core.  */
+-    goto out;
+-
+-  if (retval->decided <= 0)
+-    _nl_load_domain (retval, domainbinding);
+-  if (retval->data == NULL)
+-    {
+-      int cnt;
+-      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+-	{
+-	  if (retval->successor[cnt]->decided <= 0)
+-	    _nl_load_domain (retval->successor[cnt], domainbinding);
+-	  if (retval->successor[cnt]->data != NULL)
+-	    break;
+-	}
+-    }
+-
+-  /* The room for an alias was dynamically allocated.  Free it now.  */
+-  if (alias_value != NULL)
+-    free (locale);
+-
+-out:
+-  /* The space for normalized_codeset is dynamically allocated.  Free it.  */
+-  if (mask & XPG_NORM_CODESET)
+-    free ((void *) normalized_codeset);
+-
+-  return retval;
+-}
+-
+-
+-#ifdef _LIBC
+-/* This is called from iconv/gconv_db.c's free_mem, as locales must
+-   be freed before freeing gconv steps arrays.  */
+-void __libc_freeres_fn_section
+-_nl_finddomain_subfreeres ()
+-{
+-  struct loaded_l10nfile *runp = _nl_loaded_domains;
+-
+-  while (runp != NULL)
+-    {
+-      struct loaded_l10nfile *here = runp;
+-      if (runp->data != NULL)
+-	_nl_unload_domain ((struct loaded_domain *) runp->data);
+-      runp = runp->next;
+-      free ((char *) here->filename);
+-      free (here);
+-    }
+-}
+-#endif
+--- a/intl/gettext.c
++++ /dev/null
+@@ -1,63 +0,0 @@
+-/* Implementation of gettext(3) function.
+-   Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#ifdef _LIBC
+-# define __need_NULL
+-# include <stddef.h>
+-#else
+-# include <stdlib.h>		/* Just for NULL.  */
+-#endif
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define GETTEXT __gettext
+-# define DCGETTEXT INTUSE(__dcgettext)
+-#else
+-# define GETTEXT libintl_gettext
+-# define DCGETTEXT libintl_dcgettext
+-#endif
+-
+-/* Look up MSGID in the current default message catalog for the current
+-   LC_MESSAGES locale.  If not found, returns MSGID itself (the default
+-   text).  */
+-char *
+-GETTEXT (const char *msgid)
+-{
+-  return DCGETTEXT (NULL, msgid, LC_MESSAGES);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-weak_alias (__gettext, gettext);
+-#endif
+--- a/intl/gettextP.h
++++ /dev/null
+@@ -1,297 +0,0 @@
+-/* Header describing internals of libintl library.
+-   Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc.
+-   Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _GETTEXTP_H
+-#define _GETTEXTP_H
+-
+-#include <stddef.h>		/* Get size_t.  */
+-
+-#ifdef _LIBC
+-# include "../iconv/gconv_int.h"
+-#else
+-# if HAVE_ICONV
+-#  include <iconv.h>
+-# endif
+-#endif
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-# define gl_rwlock_define __libc_rwlock_define
+-#else
+-# include "lock.h"
+-#endif
+-
+-#ifdef _LIBC
+-extern char *__gettext (const char *__msgid);
+-extern char *__dgettext (const char *__domainname, const char *__msgid);
+-extern char *__dcgettext (const char *__domainname, const char *__msgid,
+-			  int __category);
+-extern char *__ngettext (const char *__msgid1, const char *__msgid2,
+-			 unsigned long int __n);
+-extern char *__dngettext (const char *__domainname,
+-			  const char *__msgid1, const char *__msgid2,
+-			  unsigned long int n);
+-extern char *__dcngettext (const char *__domainname,
+-			   const char *__msgid1, const char *__msgid2,
+-			   unsigned long int __n, int __category);
+-extern char *__dcigettext (const char *__domainname,
+-			   const char *__msgid1, const char *__msgid2,
+-			   int __plural, unsigned long int __n,
+-			   int __category);
+-extern char *__textdomain (const char *__domainname);
+-extern char *__bindtextdomain (const char *__domainname,
+-			       const char *__dirname);
+-extern char *__bind_textdomain_codeset (const char *__domainname,
+-					const char *__codeset);
+-extern void _nl_finddomain_subfreeres (void) attribute_hidden;
+-extern void _nl_unload_domain (struct loaded_domain *__domain)
+-     internal_function attribute_hidden;
+-#else
+-/* Declare the exported libintl_* functions, in a way that allows us to
+-   call them under their real name.  */
+-# undef _INTL_REDIRECT_INLINE
+-# undef _INTL_REDIRECT_MACROS
+-# define _INTL_REDIRECT_MACROS
+-# include "libgnuintl.h"
+-# ifdef IN_LIBGLOCALE
+-extern char *gl_dcigettext (const char *__domainname,
+-			    const char *__msgid1, const char *__msgid2,
+-			    int __plural, unsigned long int __n,
+-			    int __category,
+-			    const char *__localename, const char *__encoding);
+-# else
+-extern char *libintl_dcigettext (const char *__domainname,
+-				 const char *__msgid1, const char *__msgid2,
+-				 int __plural, unsigned long int __n,
+-				 int __category);
+-# endif
+-#endif
+-
+-#include "loadinfo.h"
+-
+-#include "gmo.h"		/* Get nls_uint32.  */
+-
+-/* @@ end of prolog @@ */
+-
+-#ifndef internal_function
+-# define internal_function
+-#endif
+-
+-#ifndef attribute_hidden
+-# define attribute_hidden
+-#endif
+-
+-/* Tell the compiler when a conditional or integer expression is
+-   almost always true or almost always false.  */
+-#ifndef HAVE_BUILTIN_EXPECT
+-# define __builtin_expect(expr, val) (expr)
+-#endif
+-
+-#ifndef W
+-# define W(flag, data) ((flag) ? SWAP (data) : (data))
+-#endif
+-
+-
+-#ifdef _LIBC
+-# include <byteswap.h>
+-# define SWAP(i) bswap_32 (i)
+-#else
+-static inline nls_uint32
+-# ifdef __cplusplus
+-SWAP (nls_uint32 i)
+-# else
+-SWAP (i)
+-     nls_uint32 i;
+-# endif
+-{
+-  return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+-}
+-#endif
+-
+-
+-/* In-memory representation of system dependent string.  */
+-struct sysdep_string_desc
+-{
+-  /* Length of addressed string, including the trailing NUL.  */
+-  size_t length;
+-  /* Pointer to addressed string.  */
+-  const char *pointer;
+-};
+-
+-/* Cache of translated strings after charset conversion.
+-   Note: The strings are converted to the target encoding only on an as-needed
+-   basis.  */
+-struct converted_domain
+-{
+-  /* The target encoding name.  */
+-  const char *encoding;
+-  /* The descriptor for conversion from the message catalog's encoding to
+-     this target encoding.  */
+-#ifdef _LIBC
+-  __gconv_t conv;
+-#else
+-# if HAVE_ICONV
+-  iconv_t conv;
+-# endif
+-#endif
+-  /* The table of translated strings after charset conversion.  */
+-  char **conv_tab;
+-};
+-
+-/* The representation of an opened message catalog.  */
+-struct loaded_domain
+-{
+-  /* Pointer to memory containing the .mo file.  */
+-  const char *data;
+-  /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed.  */
+-  int use_mmap;
+-  /* Size of mmap()ed memory.  */
+-  size_t mmap_size;
+-  /* 1 if the .mo file uses a different endianness than this machine.  */
+-  int must_swap;
+-  /* Pointer to additional malloc()ed memory.  */
+-  void *malloced;
+-
+-  /* Number of static strings pairs.  */
+-  nls_uint32 nstrings;
+-  /* Pointer to descriptors of original strings in the file.  */
+-  const struct string_desc *orig_tab;
+-  /* Pointer to descriptors of translated strings in the file.  */
+-  const struct string_desc *trans_tab;
+-
+-  /* Number of system dependent strings pairs.  */
+-  nls_uint32 n_sysdep_strings;
+-  /* Pointer to descriptors of original sysdep strings.  */
+-  const struct sysdep_string_desc *orig_sysdep_tab;
+-  /* Pointer to descriptors of translated sysdep strings.  */
+-  const struct sysdep_string_desc *trans_sysdep_tab;
+-
+-  /* Size of hash table.  */
+-  nls_uint32 hash_size;
+-  /* Pointer to hash table.  */
+-  const nls_uint32 *hash_tab;
+-  /* 1 if the hash table uses a different endianness than this machine.  */
+-  int must_swap_hash_tab;
+-
+-  /* Cache of charset conversions of the translated strings.  */
+-  struct converted_domain *conversions;
+-  size_t nconversions;
+-  gl_rwlock_define (, conversions_lock)
+-
+-  const struct expression *plural;
+-  unsigned long int nplurals;
+-};
+-
+-/* We want to allocate a string at the end of the struct.  But ISO C
+-   doesn't allow zero sized arrays.  */
+-#ifdef __GNUC__
+-# define ZERO 0
+-#else
+-# define ZERO 1
+-#endif
+-
+-/* A set of settings bound to a message domain.  Used to store settings
+-   from bindtextdomain() and bind_textdomain_codeset().  */
+-struct binding
+-{
+-  struct binding *next;
+-  char *dirname;
+-  char *codeset;
+-  char domainname[ZERO];
+-};
+-
+-/* A counter which is incremented each time some previous translations
+-   become invalid.
+-   This variable is part of the external ABI of the GNU libintl.  */
+-#ifdef IN_LIBGLOCALE
+-# include <glocale/config.h>
+-extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr;
+-#else
+-extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr;
+-#endif
+-
+-#ifndef _LIBC
+-extern const char *_nl_language_preferences_default (void);
+-# define gl_locale_name_canonicalize _nl_locale_name_canonicalize
+-extern void _nl_locale_name_canonicalize (char *name);
+-# define gl_locale_name_posix _nl_locale_name_posix
+-extern const char *_nl_locale_name_posix (int category,
+-					  const char *categoryname);
+-# define gl_locale_name_default _nl_locale_name_default
+-extern const char *_nl_locale_name_default (void);
+-# define gl_locale_name _nl_locale_name
+-extern const char *_nl_locale_name (int category, const char *categoryname);
+-#endif
+-
+-struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale,
+-					 const char *__domainname,
+-					 struct binding *__domainbinding)
+-     internal_function;
+-void _nl_load_domain (struct loaded_l10nfile *__domain,
+-		      struct binding *__domainbinding)
+-     internal_function;
+-
+-#ifdef IN_LIBGLOCALE
+-char *_nl_find_msg (struct loaded_l10nfile *domain_file,
+-		    struct binding *domainbinding, const char *encoding,
+-		    const char *msgid,
+-		    size_t *lengthp)
+-     internal_function;
+-#else
+-char *_nl_find_msg (struct loaded_l10nfile *domain_file,
+-		    struct binding *domainbinding, const char *msgid,
+-		    int convert, size_t *lengthp)
+-     internal_function;
+-#endif
+-
+-/* The internal variables in the standalone libintl.a must have different
+-   names than the internal variables in GNU libc, otherwise programs
+-   using libintl.a cannot be linked statically.  */
+-#if !defined _LIBC
+-# define _nl_default_dirname libintl_nl_default_dirname
+-# define _nl_domain_bindings libintl_nl_domain_bindings
+-#endif
+-
+-/* Contains the default location of the message catalogs.  */
+-extern const char _nl_default_dirname[];
+-#ifdef _LIBC
+-libc_hidden_proto (_nl_default_dirname)
+-#endif
+-
+-/* List with bindings of specific domains.  */
+-extern struct binding *_nl_domain_bindings;
+-
+-/* The internal variables in the standalone libintl.a must have different
+-   names than the internal variables in GNU libc, otherwise programs
+-   using libintl.a cannot be linked statically.  */
+-#if !defined _LIBC
+-# define _nl_default_default_domain libintl_nl_default_default_domain
+-# define _nl_current_default_domain libintl_nl_current_default_domain
+-#endif
+-
+-/* Name of the default text domain.  */
+-extern const char _nl_default_default_domain[] attribute_hidden;
+-
+-/* Default text domain in which entries for gettext(3) are to be found.  */
+-extern const char *_nl_current_default_domain attribute_hidden;
+-
+-/* @@ begin of epilog @@ */
+-
+-#endif /* gettextP.h  */
+--- a/intl/gmo.h
++++ /dev/null
+@@ -1,152 +0,0 @@
+-/* Description of GNU message catalog format: general file layout.
+-   Copyright (C) 1995, 1997, 2000-2002, 2004, 2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _GETTEXT_H
+-#define _GETTEXT_H 1
+-
+-#include <limits.h>
+-
+-/* @@ end of prolog @@ */
+-
+-/* The magic number of the GNU message catalog format.  */
+-#define _MAGIC 0x950412de
+-#define _MAGIC_SWAPPED 0xde120495
+-
+-/* Revision number of the currently used .mo (binary) file format.  */
+-#define MO_REVISION_NUMBER 0
+-#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1
+-
+-/* The following contortions are an attempt to use the C preprocessor
+-   to determine an unsigned integral type that is 32 bits wide.  An
+-   alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+-   as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work
+-   when cross-compiling.  */
+-
+-#if __STDC__
+-# define UINT_MAX_32_BITS 4294967295U
+-#else
+-# define UINT_MAX_32_BITS 0xFFFFFFFF
+-#endif
+-
+-/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+-   This should be valid for all systems GNU cares about because
+-   that doesn't include 16-bit systems, and only modern systems
+-   (that certainly have <limits.h>) have 64+-bit integral types.  */
+-
+-#ifndef UINT_MAX
+-# define UINT_MAX UINT_MAX_32_BITS
+-#endif
+-
+-#if UINT_MAX == UINT_MAX_32_BITS
+-typedef unsigned nls_uint32;
+-#else
+-# if USHRT_MAX == UINT_MAX_32_BITS
+-typedef unsigned short nls_uint32;
+-# else
+-#  if ULONG_MAX == UINT_MAX_32_BITS
+-typedef unsigned long nls_uint32;
+-#  else
+-  /* The following line is intended to throw an error.  Using #error is
+-     not portable enough.  */
+-  "Cannot determine unsigned 32-bit data type."
+-#  endif
+-# endif
+-#endif
+-
+-
+-/* Header for binary .mo file format.  */
+-struct mo_file_header
+-{
+-  /* The magic number.  */
+-  nls_uint32 magic;
+-  /* The revision number of the file format.  */
+-  nls_uint32 revision;
+-
+-  /* The following are only used in .mo files with major revision 0 or 1.  */
+-
+-  /* The number of strings pairs.  */
+-  nls_uint32 nstrings;
+-  /* Offset of table with start offsets of original strings.  */
+-  nls_uint32 orig_tab_offset;
+-  /* Offset of table with start offsets of translated strings.  */
+-  nls_uint32 trans_tab_offset;
+-  /* Size of hash table.  */
+-  nls_uint32 hash_tab_size;
+-  /* Offset of first hash table entry.  */
+-  nls_uint32 hash_tab_offset;
+-
+-  /* The following are only used in .mo files with minor revision >= 1.  */
+-
+-  /* The number of system dependent segments.  */
+-  nls_uint32 n_sysdep_segments;
+-  /* Offset of table describing system dependent segments.  */
+-  nls_uint32 sysdep_segments_offset;
+-  /* The number of system dependent strings pairs.  */
+-  nls_uint32 n_sysdep_strings;
+-  /* Offset of table with start offsets of original sysdep strings.  */
+-  nls_uint32 orig_sysdep_tab_offset;
+-  /* Offset of table with start offsets of translated sysdep strings.  */
+-  nls_uint32 trans_sysdep_tab_offset;
+-};
+-
+-/* Descriptor for static string contained in the binary .mo file.  */
+-struct string_desc
+-{
+-  /* Length of addressed string, not including the trailing NUL.  */
+-  nls_uint32 length;
+-  /* Offset of string in file.  */
+-  nls_uint32 offset;
+-};
+-
+-/* The following are only used in .mo files with minor revision >= 1.  */
+-
+-/* Descriptor for system dependent string segment.  */
+-struct sysdep_segment
+-{
+-  /* Length of addressed string, including the trailing NUL.  */
+-  nls_uint32 length;
+-  /* Offset of string in file.  */
+-  nls_uint32 offset;
+-};
+-
+-/* Pair of a static and a system dependent segment, in struct sysdep_string.  */
+-struct segment_pair
+-{
+-  /* Size of static segment.  */
+-  nls_uint32 segsize;
+-  /* Reference to system dependent string segment, or ~0 at the end.  */
+-  nls_uint32 sysdepref;
+-};
+-
+-/* Descriptor for system dependent string.  */
+-struct sysdep_string
+-{
+-  /* Offset of static string segments in file.  */
+-  nls_uint32 offset;
+-  /* Alternating sequence of static and system dependent segments.
+-     The last segment is a static segment, including the trailing NUL.  */
+-  struct segment_pair segments[1];
+-};
+-
+-/* Marker for the end of the segments[] array.  This has the value 0xFFFFFFFF,
+-   regardless whether 'int' is 16 bit, 32 bit, or 64 bit.  */
+-#define SEGMENTS_END ((nls_uint32) ~0)
+-
+-/* @@ begin of epilog @@ */
+-
+-#endif	/* gettext.h  */
+--- a/intl/hash-string.c
++++ /dev/null
+@@ -1,51 +0,0 @@
+-/* Implements a string hashing function.
+-   Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C 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.
+-
+-   The GNU C 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 the GNU C Library; if not, write to the Free
+-   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+-   Boston, MA 02110-1301, USA.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-/* Specification.  */
+-#include "hash-string.h"
+-
+-
+-/* Defines the so called `hashpjw' function by P.J. Weinberger
+-   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+-   1986, 1987 Bell Telephone Laboratories, Inc.]  */
+-unsigned long int
+-__hash_string (const char *str_param)
+-{
+-  unsigned long int hval, g;
+-  const char *str = str_param;
+-
+-  /* Compute the hash value for the given string.  */
+-  hval = 0;
+-  while (*str != '\0')
+-    {
+-      hval <<= 4;
+-      hval += (unsigned char) *str++;
+-      g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
+-      if (g != 0)
+-	{
+-	  hval ^= g >> (HASHWORDBITS - 8);
+-	  hval ^= g;
+-	}
+-    }
+-  return hval;
+-}
+--- a/intl/hash-string.h
++++ /dev/null
+@@ -1,36 +0,0 @@
+-/* Description of GNU message catalog format: string hashing function.
+-   Copyright (C) 1995, 1997-1998, 2000-2003, 2005 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* @@ end of prolog @@ */
+-
+-/* We assume to have `unsigned long int' value with at least 32 bits.  */
+-#define HASHWORDBITS 32
+-
+-
+-#ifndef _LIBC
+-# ifdef IN_LIBINTL
+-#  define __hash_string libintl_hash_string
+-# else
+-#  define __hash_string hash_string
+-# endif
+-#endif
+-
+-/* Defines the so called `hashpjw' function by P.J. Weinberger
+-   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+-   1986, 1987 Bell Telephone Laboratories, Inc.]  */
+-extern unsigned long int __hash_string (const char *str_param);
+--- a/intl/intl-compat.c
++++ /dev/null
+@@ -1,133 +0,0 @@
+-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
+-   Library.
+-   Copyright (C) 1995, 2000-2003, 2005 Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "gettextP.h"
+-
+-/* @@ end of prolog @@ */
+-
+-/* This file redirects the gettext functions (without prefix) to those
+-   defined in the included GNU libintl library (with "libintl_" prefix).
+-   It is compiled into libintl in order to make the AM_GNU_GETTEXT test
+-   of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which
+-   has the redirections primarily in the <libintl.h> include file.
+-   It is also compiled into libgnuintl so that libgnuintl.so can be used
+-   as LD_PRELOADable library on glibc systems, to provide the extra
+-   features that the functions in the libc don't have (namely, logging).  */
+-
+-
+-#undef gettext
+-#undef dgettext
+-#undef dcgettext
+-#undef ngettext
+-#undef dngettext
+-#undef dcngettext
+-#undef textdomain
+-#undef bindtextdomain
+-#undef bind_textdomain_codeset
+-
+-
+-/* When building a DLL, we must export some functions.  Note that because
+-   the functions are only defined for binary backward compatibility, we
+-   don't need to use __declspec(dllimport) in any case.  */
+-#if HAVE_VISIBILITY && BUILDING_DLL
+-# define DLL_EXPORTED __attribute__((__visibility__("default")))
+-#elif defined _MSC_VER && BUILDING_DLL
+-# define DLL_EXPORTED __declspec(dllexport)
+-#else
+-# define DLL_EXPORTED
+-#endif
+-
+-
+-DLL_EXPORTED
+-char *
+-gettext (const char *msgid)
+-{
+-  return libintl_gettext (msgid);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-dgettext (const char *domainname, const char *msgid)
+-{
+-  return libintl_dgettext (domainname, msgid);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-dcgettext (const char *domainname, const char *msgid, int category)
+-{
+-  return libintl_dcgettext (domainname, msgid, category);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-ngettext (const char *msgid1, const char *msgid2, unsigned long int n)
+-{
+-  return libintl_ngettext (msgid1, msgid2, n);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-dngettext (const char *domainname,
+-	   const char *msgid1, const char *msgid2, unsigned long int n)
+-{
+-  return libintl_dngettext (domainname, msgid1, msgid2, n);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-dcngettext (const char *domainname,
+-	    const char *msgid1, const char *msgid2, unsigned long int n,
+-	    int category)
+-{
+-  return libintl_dcngettext (domainname, msgid1, msgid2, n, category);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-textdomain (const char *domainname)
+-{
+-  return libintl_textdomain (domainname);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-bindtextdomain (const char *domainname, const char *dirname)
+-{
+-  return libintl_bindtextdomain (domainname, dirname);
+-}
+-
+-
+-DLL_EXPORTED
+-char *
+-bind_textdomain_codeset (const char *domainname, const char *codeset)
+-{
+-  return libintl_bind_textdomain_codeset (domainname, codeset);
+-}
+--- a/intl/intl-exports.c
++++ /dev/null
+@@ -1,36 +0,0 @@
+-/* List of exported symbols of libintl on Cygwin.
+-   Copyright (C) 2006 Free Software Foundation, Inc.
+-   Written by Bruno Haible <bruno@clisp.org>, 2006.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+- /* IMP(x) is a symbol that contains the address of x.  */
+-#define IMP(x) _imp__##x
+-
+- /* Ensure that the variable x is exported from the library, and that a
+-    pseudo-variable IMP(x) is available.  */
+-#define VARIABLE(x) \
+- /* Export x without redefining x.  This code was found by compiling a	\
+-    snippet:								\
+-      extern __declspec(dllexport) int x; int x = 42;  */		\
+- asm (".section .drectve\n");						\
+- asm (".ascii \" -export:" #x ",data\"\n");				\
+- asm (".data\n");							\
+- /* Allocate a pseudo-variable IMP(x).  */				\
+- extern int x;								\
+- void * IMP(x) = &x;
+-
+-VARIABLE(libintl_version)
+--- a/intl/l10nflist.c
++++ /dev/null
+@@ -1,400 +0,0 @@
+-/* Copyright (C) 1995-1999, 2000-2006 Free Software Foundation, Inc.
+-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Tell glibc's <string.h> to provide a prototype for stpcpy().
+-   This must come before <config.h> because <config.h> may include
+-   <features.h>, and once <features.h> has been included, it's too late.  */
+-#ifndef _GNU_SOURCE
+-# define _GNU_SOURCE	1
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <string.h>
+-
+-#if defined _LIBC || defined HAVE_ARGZ_H
+-# include <argz.h>
+-#endif
+-#include <ctype.h>
+-#include <sys/types.h>
+-#include <stdlib.h>
+-
+-#include "loadinfo.h"
+-
+-/* On some strange systems still no definition of NULL is found.  Sigh!  */
+-#ifndef NULL
+-# if defined __STDC__ && __STDC__
+-#  define NULL ((void *) 0)
+-# else
+-#  define NULL 0
+-# endif
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ANSI C functions.  This is required by the standard
+-   because some ANSI C functions will require linking with this object
+-   file and the name space must not be polluted.  */
+-# ifndef stpcpy
+-#  define stpcpy(dest, src) __stpcpy(dest, src)
+-# endif
+-#else
+-# ifndef HAVE_STPCPY
+-static char *stpcpy (char *dest, const char *src);
+-# endif
+-#endif
+-
+-/* Pathname support.
+-   ISSLASH(C)           tests whether C is a directory separator character.
+-   IS_ABSOLUTE_PATH(P)  tests whether P is an absolute path.  If it is not,
+-                        it may be concatenated to a directory pathname.
+- */
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+-  /* Win32, Cygwin, OS/2, DOS */
+-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+-# define HAS_DEVICE(P) \
+-    ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+-     && (P)[1] == ':')
+-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
+-#else
+-  /* Unix */
+-# define ISSLASH(C) ((C) == '/')
+-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
+-#endif
+-
+-/* Define function which are usually not available.  */
+-
+-#ifdef _LIBC
+-# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len)
+-#elif defined HAVE_ARGZ_COUNT
+-# undef __argz_count
+-# define __argz_count argz_count
+-#else
+-/* Returns the number of strings in ARGZ.  */
+-static size_t
+-argz_count__ (const char *argz, size_t len)
+-{
+-  size_t count = 0;
+-  while (len > 0)
+-    {
+-      size_t part_len = strlen (argz);
+-      argz += part_len + 1;
+-      len -= part_len + 1;
+-      count++;
+-    }
+-  return count;
+-}
+-# undef __argz_count
+-# define __argz_count(argz, len) argz_count__ (argz, len)
+-#endif	/* !_LIBC && !HAVE_ARGZ_COUNT */
+-
+-#ifdef _LIBC
+-# define __argz_stringify(argz, len, sep) \
+-  INTUSE(__argz_stringify) (argz, len, sep)
+-#elif defined HAVE_ARGZ_STRINGIFY
+-# undef __argz_stringify
+-# define __argz_stringify argz_stringify
+-#else
+-/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
+-   except the last into the character SEP.  */
+-static void
+-argz_stringify__ (char *argz, size_t len, int sep)
+-{
+-  while (len > 0)
+-    {
+-      size_t part_len = strlen (argz);
+-      argz += part_len;
+-      len -= part_len + 1;
+-      if (len > 0)
+-	*argz++ = sep;
+-    }
+-}
+-# undef __argz_stringify
+-# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
+-#endif	/* !_LIBC && !HAVE_ARGZ_STRINGIFY */
+-
+-#ifdef _LIBC
+-#elif defined HAVE_ARGZ_NEXT
+-# undef __argz_next
+-# define __argz_next argz_next
+-#else
+-static char *
+-argz_next__ (char *argz, size_t argz_len, const char *entry)
+-{
+-  if (entry)
+-    {
+-      if (entry < argz + argz_len)
+-        entry = strchr (entry, '\0') + 1;
+-
+-      return entry >= argz + argz_len ? NULL : (char *) entry;
+-    }
+-  else
+-    if (argz_len > 0)
+-      return argz;
+-    else
+-      return 0;
+-}
+-# undef __argz_next
+-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
+-#endif	/* !_LIBC && !HAVE_ARGZ_NEXT */
+-
+-
+-/* Return number of bits set in X.  */
+-static inline int
+-pop (int x)
+-{
+-  /* We assume that no more than 16 bits are used.  */
+-  x = ((x & ~0x5555) >> 1) + (x & 0x5555);
+-  x = ((x & ~0x3333) >> 2) + (x & 0x3333);
+-  x = ((x >> 4) + x) & 0x0f0f;
+-  x = ((x >> 8) + x) & 0xff;
+-
+-  return x;
+-}
+-
+-
+-struct loaded_l10nfile *
+-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
+-		    const char *dirlist, size_t dirlist_len,
+-		    int mask, const char *language, const char *territory,
+-		    const char *codeset, const char *normalized_codeset,
+-		    const char *modifier,
+-		    const char *filename, int do_allocate)
+-{
+-  char *abs_filename;
+-  struct loaded_l10nfile **lastp;
+-  struct loaded_l10nfile *retval;
+-  char *cp;
+-  size_t dirlist_count;
+-  size_t entries;
+-  int cnt;
+-
+-  /* If LANGUAGE contains an absolute directory specification, we ignore
+-     DIRLIST.  */
+-  if (IS_ABSOLUTE_PATH (language))
+-    dirlist_len = 0;
+-
+-  /* Allocate room for the full file name.  */
+-  abs_filename = (char *) malloc (dirlist_len
+-				  + strlen (language)
+-				  + ((mask & XPG_TERRITORY) != 0
+-				     ? strlen (territory) + 1 : 0)
+-				  + ((mask & XPG_CODESET) != 0
+-				     ? strlen (codeset) + 1 : 0)
+-				  + ((mask & XPG_NORM_CODESET) != 0
+-				     ? strlen (normalized_codeset) + 1 : 0)
+-				  + ((mask & XPG_MODIFIER) != 0
+-				     ? strlen (modifier) + 1 : 0)
+-				  + 1 + strlen (filename) + 1);
+-
+-  if (abs_filename == NULL)
+-    return NULL;
+-
+-  /* Construct file name.  */
+-  cp = abs_filename;
+-  if (dirlist_len > 0)
+-    {
+-      memcpy (cp, dirlist, dirlist_len);
+-      __argz_stringify (cp, dirlist_len, PATH_SEPARATOR);
+-      cp += dirlist_len;
+-      cp[-1] = '/';
+-    }
+-
+-  cp = stpcpy (cp, language);
+-
+-  if ((mask & XPG_TERRITORY) != 0)
+-    {
+-      *cp++ = '_';
+-      cp = stpcpy (cp, territory);
+-    }
+-  if ((mask & XPG_CODESET) != 0)
+-    {
+-      *cp++ = '.';
+-      cp = stpcpy (cp, codeset);
+-    }
+-  if ((mask & XPG_NORM_CODESET) != 0)
+-    {
+-      *cp++ = '.';
+-      cp = stpcpy (cp, normalized_codeset);
+-    }
+-  if ((mask & XPG_MODIFIER) != 0)
+-    {
+-      *cp++ = '@';
+-      cp = stpcpy (cp, modifier);
+-    }
+-
+-  *cp++ = '/';
+-  stpcpy (cp, filename);
+-
+-  /* Look in list of already loaded domains whether it is already
+-     available.  */
+-  lastp = l10nfile_list;
+-  for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
+-    if (retval->filename != NULL)
+-      {
+-	int compare = strcmp (retval->filename, abs_filename);
+-	if (compare == 0)
+-	  /* We found it!  */
+-	  break;
+-	if (compare < 0)
+-	  {
+-	    /* It's not in the list.  */
+-	    retval = NULL;
+-	    break;
+-	  }
+-
+-	lastp = &retval->next;
+-      }
+-
+-  if (retval != NULL || do_allocate == 0)
+-    {
+-      free (abs_filename);
+-      return retval;
+-    }
+-
+-  dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1);
+-
+-  /* Allocate a new loaded_l10nfile.  */
+-  retval =
+-    (struct loaded_l10nfile *)
+-    malloc (sizeof (*retval)
+-	    + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0))
+-	       * sizeof (struct loaded_l10nfile *)));
+-  if (retval == NULL)
+-    {
+-      free (abs_filename);
+-      return NULL;
+-    }
+-
+-  retval->filename = abs_filename;
+-
+-  /* We set retval->data to NULL here; it is filled in later.
+-     Setting retval->decided to 1 here means that retval does not
+-     correspond to a real file (dirlist_count > 1) or is not worth
+-     looking up (if an unnormalized codeset was specified).  */
+-  retval->decided = (dirlist_count > 1
+-		     || ((mask & XPG_CODESET) != 0
+-			 && (mask & XPG_NORM_CODESET) != 0));
+-  retval->data = NULL;
+-
+-  retval->next = *lastp;
+-  *lastp = retval;
+-
+-  entries = 0;
+-  /* Recurse to fill the inheritance list of RETVAL.
+-     If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL
+-     entry does not correspond to a real file; retval->filename contains
+-     colons.  In this case we loop across all elements of DIRLIST and
+-     across all bit patterns dominated by MASK.
+-     If the DIRLIST is a single directory or entirely redundant (i.e.
+-     DIRLIST_COUNT == 1), we loop across all bit patterns dominated by
+-     MASK, excluding MASK itself.
+-     In either case, we loop down from MASK to 0.  This has the effect
+-     that the extra bits in the locale name are dropped in this order:
+-     first the modifier, then the territory, then the codeset, then the
+-     normalized_codeset.  */
+-  for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt)
+-    if ((cnt & ~mask) == 0
+-	&& !((cnt & XPG_CODESET) != 0 && (cnt & XPG_NORM_CODESET) != 0))
+-      {
+-	if (dirlist_count > 1)
+-	  {
+-	    /* Iterate over all elements of the DIRLIST.  */
+-	    char *dir = NULL;
+-
+-	    while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
+-		   != NULL)
+-	      retval->successor[entries++]
+-		= _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1,
+-				      cnt, language, territory, codeset,
+-				      normalized_codeset, modifier, filename,
+-				      1);
+-	  }
+-	else
+-	  retval->successor[entries++]
+-	    = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len,
+-				  cnt, language, territory, codeset,
+-				  normalized_codeset, modifier, filename, 1);
+-      }
+-  retval->successor[entries] = NULL;
+-
+-  return retval;
+-}
+-
+-/* Normalize codeset name.  There is no standard for the codeset
+-   names.  Normalization allows the user to use any of the common
+-   names.  The return value is dynamically allocated and has to be
+-   freed by the caller.  */
+-const char *
+-_nl_normalize_codeset (const char *codeset, size_t name_len)
+-{
+-  int len = 0;
+-  int only_digit = 1;
+-  char *retval;
+-  char *wp;
+-  size_t cnt;
+-
+-  for (cnt = 0; cnt < name_len; ++cnt)
+-    if (isalnum ((unsigned char) codeset[cnt]))
+-      {
+-	++len;
+-
+-	if (isalpha ((unsigned char) codeset[cnt]))
+-	  only_digit = 0;
+-      }
+-
+-  retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
+-
+-  if (retval != NULL)
+-    {
+-      if (only_digit)
+-	wp = stpcpy (retval, "iso");
+-      else
+-	wp = retval;
+-
+-      for (cnt = 0; cnt < name_len; ++cnt)
+-	if (isalpha ((unsigned char) codeset[cnt]))
+-	  *wp++ = tolower ((unsigned char) codeset[cnt]);
+-	else if (isdigit ((unsigned char) codeset[cnt]))
+-	  *wp++ = codeset[cnt];
+-
+-      *wp = '\0';
+-    }
+-
+-  return (const char *) retval;
+-}
+-
+-
+-/* @@ begin of epilog @@ */
+-
+-/* We don't want libintl.a to depend on any other library.  So we
+-   avoid the non-standard function stpcpy.  In GNU C Library this
+-   function is available, though.  Also allow the symbol HAVE_STPCPY
+-   to be defined.  */
+-#if !_LIBC && !HAVE_STPCPY
+-static char *
+-stpcpy (char *dest, const char *src)
+-{
+-  while ((*dest++ = *src++) != '\0')
+-    /* Do nothing. */ ;
+-  return dest - 1;
+-}
+-#endif
+--- a/intl/langprefs.c
++++ /dev/null
+@@ -1,130 +0,0 @@
+-/* Determine the user's language preferences.
+-   Copyright (C) 2004-2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Written by Bruno Haible <bruno@clisp.org>.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdlib.h>
+-
+-#if HAVE_CFPREFERENCESCOPYAPPVALUE
+-# include <string.h>
+-# include <CoreFoundation/CFPreferences.h>
+-# include <CoreFoundation/CFPropertyList.h>
+-# include <CoreFoundation/CFArray.h>
+-# include <CoreFoundation/CFString.h>
+-extern void _nl_locale_name_canonicalize (char *name);
+-#endif
+-
+-/* Determine the user's language preferences, as a colon separated list of
+-   locale names in XPG syntax
+-     language[_territory][.codeset][@modifier]
+-   The result must not be freed; it is statically allocated.
+-   The LANGUAGE environment variable does not need to be considered; it is
+-   already taken into account by the caller.  */
+-
+-const char *
+-_nl_language_preferences_default (void)
+-{
+-#if HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */
+-  {
+-    /* Cache the preferences list, since CoreFoundation calls are expensive.  */
+-    static const char *cached_languages;
+-    static int cache_initialized;
+-
+-    if (!cache_initialized)
+-      {
+-	CFTypeRef preferences =
+-	  CFPreferencesCopyAppValue (CFSTR ("AppleLanguages"),
+-				     kCFPreferencesCurrentApplication);
+-	if (preferences != NULL
+-	    && CFGetTypeID (preferences) == CFArrayGetTypeID ())
+-	  {
+-	    CFArrayRef prefArray = (CFArrayRef)preferences;
+-	    int n = CFArrayGetCount (prefArray);
+-	    char buf[256];
+-	    size_t size = 0;
+-	    int i;
+-
+-	    for (i = 0; i < n; i++)
+-	      {
+-		CFTypeRef element = CFArrayGetValueAtIndex (prefArray, i);
+-		if (element != NULL
+-		    && CFGetTypeID (element) == CFStringGetTypeID ()
+-		    && CFStringGetCString ((CFStringRef)element,
+-					   buf, sizeof (buf),
+-					   kCFStringEncodingASCII))
+-		  {
+-		    _nl_locale_name_canonicalize (buf);
+-		    size += strlen (buf) + 1;
+-		    /* Most GNU programs use msgids in English and don't ship
+-		       an en.mo message catalog.  Therefore when we see "en"
+-		       in the preferences list, arrange for gettext() to
+-		       return the msgid, and ignore all further elements of
+-		       the preferences list.  */
+-		    if (strcmp (buf, "en") == 0)
+-		      break;
+-		  }
+-		else
+-		  break;
+-	      }
+-	    if (size > 0)
+-	      {
+-		char *languages = (char *) malloc (size);
+-
+-		if (languages != NULL)
+-		  {
+-		    char *p = languages;
+-
+-		    for (i = 0; i < n; i++)
+-		      {
+-			CFTypeRef element =
+-			  CFArrayGetValueAtIndex (prefArray, i);
+-			if (element != NULL
+-		            && CFGetTypeID (element) == CFStringGetTypeID ()
+-			    && CFStringGetCString ((CFStringRef)element,
+-						   buf, sizeof (buf),
+-						   kCFStringEncodingASCII))
+-			  {
+-			    _nl_locale_name_canonicalize (buf);
+-			    strcpy (p, buf);
+-			    p += strlen (buf);
+-			    *p++ = ':';
+-			    if (strcmp (buf, "en") == 0)
+-			      break;
+-			  }
+-			else
+-			  break;
+-		      }
+-		    *--p = '\0';
+-
+-		    cached_languages = languages;
+-		  }
+-	      }
+-	  }
+-	cache_initialized = 1;
+-      }
+-    if (cached_languages != NULL)
+-      return cached_languages;
+-  }
+-#endif
+-
+-  return NULL;
+-}
+--- a/intl/libgnuintl.h.in
++++ /dev/null
+@@ -1,419 +0,0 @@
+-/* Message catalogs for internationalization.
+-   Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _LIBINTL_H
+-#define _LIBINTL_H	1
+-
+-#include <locale.h>
+-
+-/* The LC_MESSAGES locale category is the category used by the functions
+-   gettext() and dgettext().  It is specified in POSIX, but not in ANSI C.
+-   On systems that don't define it, use an arbitrary value instead.
+-   On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
+-   then includes <libintl.h> (i.e. this file!) and then only defines
+-   LC_MESSAGES.  To avoid a redefinition warning, don't define LC_MESSAGES
+-   in this case.  */
+-#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
+-# define LC_MESSAGES 1729
+-#endif
+-
+-/* We define an additional symbol to signal that we use the GNU
+-   implementation of gettext.  */
+-#define __USE_GNU_GETTEXT 1
+-
+-/* Provide information about the supported file formats.  Returns the
+-   maximum minor revision number supported for a given major revision.  */
+-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
+-  ((major) == 0 || (major) == 1 ? 1 : -1)
+-
+-/* Resolve a platform specific conflict on DJGPP.  GNU gettext takes
+-   precedence over _conio_gettext.  */
+-#ifdef __DJGPP__
+-# undef gettext
+-#endif
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-
+-/* Version number: (major<<16) + (minor<<8) + subminor */
+-#define LIBINTL_VERSION 0x001100
+-extern int libintl_version;
+-
+-
+-/* We redirect the functions to those prefixed with "libintl_".  This is
+-   necessary, because some systems define gettext/textdomain/... in the C
+-   library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
+-   If we used the unprefixed names, there would be cases where the
+-   definition in the C library would override the one in the libintl.so
+-   shared library.  Recall that on ELF systems, the symbols are looked
+-   up in the following order:
+-     1. in the executable,
+-     2. in the shared libraries specified on the link command line, in order,
+-     3. in the dependencies of the shared libraries specified on the link
+-        command line,
+-     4. in the dlopen()ed shared libraries, in the order in which they were
+-        dlopen()ed.
+-   The definition in the C library would override the one in libintl.so if
+-   either
+-     * -lc is given on the link command line and -lintl isn't, or
+-     * -lc is given on the link command line before -lintl, or
+-     * libintl.so is a dependency of a dlopen()ed shared library but not
+-       linked to the executable at link time.
+-   Since Solaris gettext() behaves differently than GNU gettext(), this
+-   would be unacceptable.
+-
+-   The redirection happens by default through macros in C, so that &gettext
+-   is independent of the compilation unit, but through inline functions in
+-   C++, in order not to interfere with the name mangling of class fields or
+-   class methods called 'gettext'.  */
+-
+-/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
+-   If he doesn't, we choose the method.  A third possible method is
+-   _INTL_REDIRECT_ASM, supported only by GCC.  */
+-#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
+-# if __GNUC__ >= 2 && !(__APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
+-#  define _INTL_REDIRECT_ASM
+-# else
+-#  ifdef __cplusplus
+-#   define _INTL_REDIRECT_INLINE
+-#  else
+-#   define _INTL_REDIRECT_MACROS
+-#  endif
+-# endif
+-#endif
+-/* Auxiliary macros.  */
+-#ifdef _INTL_REDIRECT_ASM
+-# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
+-# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
+-# define _INTL_STRINGIFY(prefix) #prefix
+-#else
+-# define _INTL_ASM(cname)
+-#endif
+-
+-/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return
+-   its n-th argument literally.  This enables GCC to warn for example about
+-   printf (gettext ("foo %y")).  */
+-#if __GNUC__ >= 3 && !(__APPLE_CC__ > 1 && defined __cplusplus)
+-# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n)))
+-#else
+-# define _INTL_MAY_RETURN_STRING_ARG(n)
+-#endif
+-
+-/* Look up MSGID in the current default message catalog for the current
+-   LC_MESSAGES locale.  If not found, returns MSGID itself (the default
+-   text).  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_gettext (const char *__msgid)
+-       _INTL_MAY_RETURN_STRING_ARG (1);
+-static inline char *gettext (const char *__msgid)
+-{
+-  return libintl_gettext (__msgid);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define gettext libintl_gettext
+-#endif
+-extern char *gettext (const char *__msgid)
+-       _INTL_ASM (libintl_gettext)
+-       _INTL_MAY_RETURN_STRING_ARG (1);
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current
+-   LC_MESSAGES locale.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_dgettext (const char *__domainname, const char *__msgid)
+-       _INTL_MAY_RETURN_STRING_ARG (2);
+-static inline char *dgettext (const char *__domainname, const char *__msgid)
+-{
+-  return libintl_dgettext (__domainname, __msgid);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define dgettext libintl_dgettext
+-#endif
+-extern char *dgettext (const char *__domainname, const char *__msgid)
+-       _INTL_ASM (libintl_dgettext)
+-       _INTL_MAY_RETURN_STRING_ARG (2);
+-#endif
+-
+-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+-   locale.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
+-				int __category)
+-       _INTL_MAY_RETURN_STRING_ARG (2);
+-static inline char *dcgettext (const char *__domainname, const char *__msgid,
+-			       int __category)
+-{
+-  return libintl_dcgettext (__domainname, __msgid, __category);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define dcgettext libintl_dcgettext
+-#endif
+-extern char *dcgettext (const char *__domainname, const char *__msgid,
+-			int __category)
+-       _INTL_ASM (libintl_dcgettext)
+-       _INTL_MAY_RETURN_STRING_ARG (2);
+-#endif
+-
+-
+-/* Similar to `gettext' but select the plural form corresponding to the
+-   number N.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
+-			       unsigned long int __n)
+-       _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
+-static inline char *ngettext (const char *__msgid1, const char *__msgid2,
+-			      unsigned long int __n)
+-{
+-  return libintl_ngettext (__msgid1, __msgid2, __n);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define ngettext libintl_ngettext
+-#endif
+-extern char *ngettext (const char *__msgid1, const char *__msgid2,
+-		       unsigned long int __n)
+-       _INTL_ASM (libintl_ngettext)
+-       _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
+-#endif
+-
+-/* Similar to `dgettext' but select the plural form corresponding to the
+-   number N.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
+-				const char *__msgid2, unsigned long int __n)
+-       _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
+-static inline char *dngettext (const char *__domainname, const char *__msgid1,
+-			       const char *__msgid2, unsigned long int __n)
+-{
+-  return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define dngettext libintl_dngettext
+-#endif
+-extern char *dngettext (const char *__domainname,
+-			const char *__msgid1, const char *__msgid2,
+-			unsigned long int __n)
+-       _INTL_ASM (libintl_dngettext)
+-       _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
+-#endif
+-
+-/* Similar to `dcgettext' but select the plural form corresponding to the
+-   number N.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_dcngettext (const char *__domainname,
+-				 const char *__msgid1, const char *__msgid2,
+-				 unsigned long int __n, int __category)
+-       _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
+-static inline char *dcngettext (const char *__domainname,
+-				const char *__msgid1, const char *__msgid2,
+-				unsigned long int __n, int __category)
+-{
+-  return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define dcngettext libintl_dcngettext
+-#endif
+-extern char *dcngettext (const char *__domainname,
+-			 const char *__msgid1, const char *__msgid2,
+-			 unsigned long int __n, int __category)
+-       _INTL_ASM (libintl_dcngettext)
+-       _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
+-#endif
+-
+-
+-#ifndef IN_LIBGLOCALE
+-
+-/* Set the current default message catalog to DOMAINNAME.
+-   If DOMAINNAME is null, return the current default.
+-   If DOMAINNAME is "", reset to the default of "messages".  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_textdomain (const char *__domainname);
+-static inline char *textdomain (const char *__domainname)
+-{
+-  return libintl_textdomain (__domainname);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define textdomain libintl_textdomain
+-#endif
+-extern char *textdomain (const char *__domainname)
+-       _INTL_ASM (libintl_textdomain);
+-#endif
+-
+-/* Specify that the DOMAINNAME message catalog will be found
+-   in DIRNAME rather than in the system locale data base.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_bindtextdomain (const char *__domainname,
+-				     const char *__dirname);
+-static inline char *bindtextdomain (const char *__domainname,
+-				    const char *__dirname)
+-{
+-  return libintl_bindtextdomain (__domainname, __dirname);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define bindtextdomain libintl_bindtextdomain
+-#endif
+-extern char *bindtextdomain (const char *__domainname, const char *__dirname)
+-       _INTL_ASM (libintl_bindtextdomain);
+-#endif
+-
+-/* Specify the character encoding in which the messages from the
+-   DOMAINNAME message catalog will be returned.  */
+-#ifdef _INTL_REDIRECT_INLINE
+-extern char *libintl_bind_textdomain_codeset (const char *__domainname,
+-					      const char *__codeset);
+-static inline char *bind_textdomain_codeset (const char *__domainname,
+-					     const char *__codeset)
+-{
+-  return libintl_bind_textdomain_codeset (__domainname, __codeset);
+-}
+-#else
+-#ifdef _INTL_REDIRECT_MACROS
+-# define bind_textdomain_codeset libintl_bind_textdomain_codeset
+-#endif
+-extern char *bind_textdomain_codeset (const char *__domainname,
+-				      const char *__codeset)
+-       _INTL_ASM (libintl_bind_textdomain_codeset);
+-#endif
+-
+-#endif /* IN_LIBGLOCALE */
+-
+-
+-/* Support for format strings with positions in *printf(), following the
+-   POSIX/XSI specification.
+-   Note: These replacements for the *printf() functions are visible only
+-   in source files that #include <libintl.h> or #include "gettext.h".
+-   Packages that use *printf() in source files that don't refer to _()
+-   or gettext() but for which the format string could be the return value
+-   of _() or gettext() need to add this #include.  Oh well.  */
+-
+-#if !@HAVE_POSIX_PRINTF@
+-
+-#include <stdio.h>
+-#include <stddef.h>
+-
+-/* Get va_list.  */
+-#if __STDC__ || defined __cplusplus || defined _MSC_VER
+-# include <stdarg.h>
+-#else
+-# include <varargs.h>
+-#endif
+-
+-#undef fprintf
+-#define fprintf libintl_fprintf
+-extern int fprintf (FILE *, const char *, ...);
+-#undef vfprintf
+-#define vfprintf libintl_vfprintf
+-extern int vfprintf (FILE *, const char *, va_list);
+-
+-#undef printf
+-#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
+-/* Don't break __attribute__((format(printf,M,N))).
+-   This redefinition is only possible because the libc in NetBSD, Cygwin,
+-   mingw does not have a function __printf__.  */
+-# define libintl_printf __printf__
+-#endif
+-#define printf libintl_printf
+-extern int printf (const char *, ...);
+-#undef vprintf
+-#define vprintf libintl_vprintf
+-extern int vprintf (const char *, va_list);
+-
+-#undef sprintf
+-#define sprintf libintl_sprintf
+-extern int sprintf (char *, const char *, ...);
+-#undef vsprintf
+-#define vsprintf libintl_vsprintf
+-extern int vsprintf (char *, const char *, va_list);
+-
+-#if @HAVE_SNPRINTF@
+-
+-#undef snprintf
+-#define snprintf libintl_snprintf
+-extern int snprintf (char *, size_t, const char *, ...);
+-#undef vsnprintf
+-#define vsnprintf libintl_vsnprintf
+-extern int vsnprintf (char *, size_t, const char *, va_list);
+-
+-#endif
+-
+-#if @HAVE_ASPRINTF@
+-
+-#undef asprintf
+-#define asprintf libintl_asprintf
+-extern int asprintf (char **, const char *, ...);
+-#undef vasprintf
+-#define vasprintf libintl_vasprintf
+-extern int vasprintf (char **, const char *, va_list);
+-
+-#endif
+-
+-#if @HAVE_WPRINTF@
+-
+-#undef fwprintf
+-#define fwprintf libintl_fwprintf
+-extern int fwprintf (FILE *, const wchar_t *, ...);
+-#undef vfwprintf
+-#define vfwprintf libintl_vfwprintf
+-extern int vfwprintf (FILE *, const wchar_t *, va_list);
+-
+-#undef wprintf
+-#define wprintf libintl_wprintf
+-extern int wprintf (const wchar_t *, ...);
+-#undef vwprintf
+-#define vwprintf libintl_vwprintf
+-extern int vwprintf (const wchar_t *, va_list);
+-
+-#undef swprintf
+-#define swprintf libintl_swprintf
+-extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
+-#undef vswprintf
+-#define vswprintf libintl_vswprintf
+-extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
+-
+-#endif
+-
+-#endif
+-
+-
+-/* Support for relocatable packages.  */
+-
+-/* Sets the original and the current installation prefix of the package.
+-   Relocation simply replaces a pathname starting with the original prefix
+-   by the corresponding pathname with the current prefix instead.  Both
+-   prefixes should be directory names without trailing slash (i.e. use ""
+-   instead of "/").  */
+-#define libintl_set_relocation_prefix libintl_set_relocation_prefix
+-extern void
+-       libintl_set_relocation_prefix (const char *orig_prefix,
+-				      const char *curr_prefix);
+-
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* libintl.h */
+--- a/intl/libintl.rc
++++ /dev/null
+@@ -1,38 +0,0 @@
+-/* Resources for intl.dll */
+-
+-#include <winver.h>
+-
+-VS_VERSION_INFO VERSIONINFO
+- FILEVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0
+- PRODUCTVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0
+- FILEFLAGSMASK 0x3fL /* VS_FFI_FILEFLAGSMASK */
+-#ifdef _DEBUG
+- FILEFLAGS 0x1L  /* VS_FF_DEBUG */
+-#else
+- FILEFLAGS 0x0L
+-#endif
+- FILEOS 0x10004L  /* VOS_DOS_WINDOWS32 */
+- FILETYPE 0x2L  /* VFT_DLL */
+- FILESUBTYPE 0x0L  /* VFT2_UNKNOWN */
+-BEGIN
+-    BLOCK "StringFileInfo"
+-    BEGIN
+-        BLOCK "04090000"  /* Lang = US English, Charset = ASCII */
+-        BEGIN
+-            VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library 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\0"
+-            VALUE "CompanyName", "Free Software Foundation\0"
+-            VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista and Windows 95/98/ME\0"
+-            VALUE "FileVersion", PACKAGE_VERSION_STRING "\0"
+-            VALUE "InternalName", "intl.dll\0"
+-            VALUE "LegalCopyright", "Copyright (C) 1995-2007\0"
+-            VALUE "LegalTrademarks", "\0"
+-            VALUE "OriginalFilename", "intl.dll\0"
+-            VALUE "ProductName", "libintl: accessing NLS message catalogs\0"
+-            VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0"
+-        END
+-    END
+-    BLOCK "VarFileInfo"
+-    BEGIN
+-        VALUE "Translation", 0x0409, 0  /* US English, ASCII */
+-    END
+-END
+--- a/intl/loadinfo.h
++++ /dev/null
+@@ -1,132 +0,0 @@
+-/* Copyright (C) 1996-1999, 2000-2003, 2005-2006 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _LOADINFO_H
+-#define _LOADINFO_H	1
+-
+-/* Declarations of locale dependent catalog lookup functions.
+-   Implemented in
+-
+-     localealias.c    Possibly replace a locale name by another.
+-     explodename.c    Split a locale name into its various fields.
+-     l10nflist.c      Generate a list of filenames of possible message catalogs.
+-     finddomain.c     Find and open the relevant message catalogs.
+-
+-   The main function _nl_find_domain() in finddomain.c is declared
+-   in gettextP.h.
+- */
+-
+-#ifndef internal_function
+-# define internal_function
+-#endif
+-
+-#ifndef LIBINTL_DLL_EXPORTED
+-# define LIBINTL_DLL_EXPORTED
+-#endif
+-
+-/* Tell the compiler when a conditional or integer expression is
+-   almost always true or almost always false.  */
+-#ifndef HAVE_BUILTIN_EXPECT
+-# define __builtin_expect(expr, val) (expr)
+-#endif
+-
+-/* Separator in PATH like lists of pathnames.  */
+-#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
+-  /* Win32, OS/2, DOS */
+-# define PATH_SEPARATOR ';'
+-#else
+-  /* Unix */
+-# define PATH_SEPARATOR ':'
+-#endif
+-
+-/* Encoding of locale name parts.  */
+-#define XPG_NORM_CODESET	1
+-#define XPG_CODESET		2
+-#define XPG_TERRITORY		4
+-#define XPG_MODIFIER		8
+-
+-
+-struct loaded_l10nfile
+-{
+-  const char *filename;
+-  int decided;
+-
+-  const void *data;
+-
+-  struct loaded_l10nfile *next;
+-  struct loaded_l10nfile *successor[1];
+-};
+-
+-
+-/* Normalize codeset name.  There is no standard for the codeset
+-   names.  Normalization allows the user to use any of the common
+-   names.  The return value is dynamically allocated and has to be
+-   freed by the caller.  */
+-extern const char *_nl_normalize_codeset (const char *codeset,
+-					  size_t name_len);
+-
+-/* Lookup a locale dependent file.
+-   *L10NFILE_LIST denotes a pool of lookup results of locale dependent
+-   files of the same kind, sorted in decreasing order of ->filename.
+-   DIRLIST and DIRLIST_LEN are an argz list of directories in which to
+-   look, containing at least one directory (i.e. DIRLIST_LEN > 0).
+-   MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER
+-   are the pieces of the locale name, as produced by _nl_explode_name().
+-   FILENAME is the filename suffix.
+-   The return value is the lookup result, either found in *L10NFILE_LIST,
+-   or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL.
+-   If the return value is non-NULL, it is added to *L10NFILE_LIST, and
+-   its ->next field denotes the chaining inside *L10NFILE_LIST, and
+-   furthermore its ->successor[] field contains a list of other lookup
+-   results from which this lookup result inherits.  */
+-extern struct loaded_l10nfile *
+-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
+-		    const char *dirlist, size_t dirlist_len, int mask,
+-		    const char *language, const char *territory,
+-		    const char *codeset, const char *normalized_codeset,
+-		    const char *modifier,
+-		    const char *filename, int do_allocate);
+-
+-/* Lookup the real locale name for a locale alias NAME, or NULL if
+-   NAME is not a locale alias (but possibly a real locale name).
+-   The return value is statically allocated and must not be freed.  */
+-/* Part of the libintl ABI only for the sake of the gettext.m4 macro.  */
+-extern LIBINTL_DLL_EXPORTED const char *_nl_expand_alias (const char *name);
+-
+-/* Split a locale name NAME into its pieces: language, modifier,
+-   territory, codeset.
+-   NAME gets destructively modified: NUL bytes are inserted here and
+-   there.  *LANGUAGE gets assigned NAME.  Each of *MODIFIER, *TERRITORY,
+-   *CODESET gets assigned either a pointer into the old NAME string, or
+-   NULL.  *NORMALIZED_CODESET gets assigned the expanded *CODESET, if it
+-   is different from *CODESET; this one is dynamically allocated and has
+-   to be freed by the caller.
+-   The return value is a bitmask, where each bit corresponds to one
+-   filled-in value:
+-     XPG_MODIFIER                for *MODIFIER,
+-     XPG_TERRITORY               for *TERRITORY,
+-     XPG_CODESET                 for *CODESET,
+-     XPG_NORM_CODESET            for *NORMALIZED_CODESET.
+- */
+-extern int _nl_explode_name (char *name, const char **language,
+-			     const char **modifier, const char **territory,
+-			     const char **codeset,
+-			     const char **normalized_codeset);
+-
+-#endif	/* loadinfo.h */
+--- a/intl/loadmsgcat.c
++++ /dev/null
+@@ -1,1336 +0,0 @@
+-/* Load needed message catalogs.
+-   Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
+-   This must come before <config.h> because <config.h> may include
+-   <features.h>, and once <features.h> has been included, it's too late.  */
+-#ifndef _GNU_SOURCE
+-# define _GNU_SOURCE    1
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <ctype.h>
+-#include <errno.h>
+-#include <fcntl.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-
+-#ifdef __GNUC__
+-# undef  alloca
+-# define alloca __builtin_alloca
+-# define HAVE_ALLOCA 1
+-#else
+-# ifdef _MSC_VER
+-#  include <malloc.h>
+-#  define alloca _alloca
+-# else
+-#  if defined HAVE_ALLOCA_H || defined _LIBC
+-#   include <alloca.h>
+-#  else
+-#   ifdef _AIX
+- #pragma alloca
+-#   else
+-#    ifndef alloca
+-char *alloca ();
+-#    endif
+-#   endif
+-#  endif
+-# endif
+-#endif
+-
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#if defined HAVE_UNISTD_H || defined _LIBC
+-# include <unistd.h>
+-#endif
+-
+-#ifdef _LIBC
+-# include <langinfo.h>
+-# include <locale.h>
+-#endif
+-
+-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+-    || (defined _LIBC && defined _POSIX_MAPPED_FILES)
+-# include <sys/mman.h>
+-# undef HAVE_MMAP
+-# define HAVE_MMAP	1
+-#else
+-# undef HAVE_MMAP
+-#endif
+-
+-#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC
+-# include <stdint.h>
+-#endif
+-#if defined HAVE_INTTYPES_H || defined _LIBC
+-# include <inttypes.h>
+-#endif
+-
+-#include "gmo.h"
+-#include "gettextP.h"
+-#include "hash-string.h"
+-#include "plural-exp.h"
+-
+-#ifdef _LIBC
+-# include "../locale/localeinfo.h"
+-# include <not-cancel.h>
+-#endif
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-#else
+-# include "lock.h"
+-#endif
+-
+-/* Provide fallback values for macros that ought to be defined in <inttypes.h>.
+-   Note that our fallback values need not be literal strings, because we don't
+-   use them with preprocessor string concatenation.  */
+-#if !defined PRId8 || PRI_MACROS_BROKEN
+-# undef PRId8
+-# define PRId8 "d"
+-#endif
+-#if !defined PRIi8 || PRI_MACROS_BROKEN
+-# undef PRIi8
+-# define PRIi8 "i"
+-#endif
+-#if !defined PRIo8 || PRI_MACROS_BROKEN
+-# undef PRIo8
+-# define PRIo8 "o"
+-#endif
+-#if !defined PRIu8 || PRI_MACROS_BROKEN
+-# undef PRIu8
+-# define PRIu8 "u"
+-#endif
+-#if !defined PRIx8 || PRI_MACROS_BROKEN
+-# undef PRIx8
+-# define PRIx8 "x"
+-#endif
+-#if !defined PRIX8 || PRI_MACROS_BROKEN
+-# undef PRIX8
+-# define PRIX8 "X"
+-#endif
+-#if !defined PRId16 || PRI_MACROS_BROKEN
+-# undef PRId16
+-# define PRId16 "d"
+-#endif
+-#if !defined PRIi16 || PRI_MACROS_BROKEN
+-# undef PRIi16
+-# define PRIi16 "i"
+-#endif
+-#if !defined PRIo16 || PRI_MACROS_BROKEN
+-# undef PRIo16
+-# define PRIo16 "o"
+-#endif
+-#if !defined PRIu16 || PRI_MACROS_BROKEN
+-# undef PRIu16
+-# define PRIu16 "u"
+-#endif
+-#if !defined PRIx16 || PRI_MACROS_BROKEN
+-# undef PRIx16
+-# define PRIx16 "x"
+-#endif
+-#if !defined PRIX16 || PRI_MACROS_BROKEN
+-# undef PRIX16
+-# define PRIX16 "X"
+-#endif
+-#if !defined PRId32 || PRI_MACROS_BROKEN
+-# undef PRId32
+-# define PRId32 "d"
+-#endif
+-#if !defined PRIi32 || PRI_MACROS_BROKEN
+-# undef PRIi32
+-# define PRIi32 "i"
+-#endif
+-#if !defined PRIo32 || PRI_MACROS_BROKEN
+-# undef PRIo32
+-# define PRIo32 "o"
+-#endif
+-#if !defined PRIu32 || PRI_MACROS_BROKEN
+-# undef PRIu32
+-# define PRIu32 "u"
+-#endif
+-#if !defined PRIx32 || PRI_MACROS_BROKEN
+-# undef PRIx32
+-# define PRIx32 "x"
+-#endif
+-#if !defined PRIX32 || PRI_MACROS_BROKEN
+-# undef PRIX32
+-# define PRIX32 "X"
+-#endif
+-#if !defined PRId64 || PRI_MACROS_BROKEN
+-# undef PRId64
+-# define PRId64 (sizeof (long) == 8 ? "ld" : "lld")
+-#endif
+-#if !defined PRIi64 || PRI_MACROS_BROKEN
+-# undef PRIi64
+-# define PRIi64 (sizeof (long) == 8 ? "li" : "lli")
+-#endif
+-#if !defined PRIo64 || PRI_MACROS_BROKEN
+-# undef PRIo64
+-# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo")
+-#endif
+-#if !defined PRIu64 || PRI_MACROS_BROKEN
+-# undef PRIu64
+-# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu")
+-#endif
+-#if !defined PRIx64 || PRI_MACROS_BROKEN
+-# undef PRIx64
+-# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx")
+-#endif
+-#if !defined PRIX64 || PRI_MACROS_BROKEN
+-# undef PRIX64
+-# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX")
+-#endif
+-#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN
+-# undef PRIdLEAST8
+-# define PRIdLEAST8 "d"
+-#endif
+-#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN
+-# undef PRIiLEAST8
+-# define PRIiLEAST8 "i"
+-#endif
+-#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN
+-# undef PRIoLEAST8
+-# define PRIoLEAST8 "o"
+-#endif
+-#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN
+-# undef PRIuLEAST8
+-# define PRIuLEAST8 "u"
+-#endif
+-#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN
+-# undef PRIxLEAST8
+-# define PRIxLEAST8 "x"
+-#endif
+-#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN
+-# undef PRIXLEAST8
+-# define PRIXLEAST8 "X"
+-#endif
+-#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN
+-# undef PRIdLEAST16
+-# define PRIdLEAST16 "d"
+-#endif
+-#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN
+-# undef PRIiLEAST16
+-# define PRIiLEAST16 "i"
+-#endif
+-#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN
+-# undef PRIoLEAST16
+-# define PRIoLEAST16 "o"
+-#endif
+-#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN
+-# undef PRIuLEAST16
+-# define PRIuLEAST16 "u"
+-#endif
+-#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN
+-# undef PRIxLEAST16
+-# define PRIxLEAST16 "x"
+-#endif
+-#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN
+-# undef PRIXLEAST16
+-# define PRIXLEAST16 "X"
+-#endif
+-#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN
+-# undef PRIdLEAST32
+-# define PRIdLEAST32 "d"
+-#endif
+-#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN
+-# undef PRIiLEAST32
+-# define PRIiLEAST32 "i"
+-#endif
+-#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN
+-# undef PRIoLEAST32
+-# define PRIoLEAST32 "o"
+-#endif
+-#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN
+-# undef PRIuLEAST32
+-# define PRIuLEAST32 "u"
+-#endif
+-#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN
+-# undef PRIxLEAST32
+-# define PRIxLEAST32 "x"
+-#endif
+-#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN
+-# undef PRIXLEAST32
+-# define PRIXLEAST32 "X"
+-#endif
+-#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN
+-# undef PRIdLEAST64
+-# define PRIdLEAST64 PRId64
+-#endif
+-#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN
+-# undef PRIiLEAST64
+-# define PRIiLEAST64 PRIi64
+-#endif
+-#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN
+-# undef PRIoLEAST64
+-# define PRIoLEAST64 PRIo64
+-#endif
+-#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN
+-# undef PRIuLEAST64
+-# define PRIuLEAST64 PRIu64
+-#endif
+-#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN
+-# undef PRIxLEAST64
+-# define PRIxLEAST64 PRIx64
+-#endif
+-#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN
+-# undef PRIXLEAST64
+-# define PRIXLEAST64 PRIX64
+-#endif
+-#if !defined PRIdFAST8 || PRI_MACROS_BROKEN
+-# undef PRIdFAST8
+-# define PRIdFAST8 "d"
+-#endif
+-#if !defined PRIiFAST8 || PRI_MACROS_BROKEN
+-# undef PRIiFAST8
+-# define PRIiFAST8 "i"
+-#endif
+-#if !defined PRIoFAST8 || PRI_MACROS_BROKEN
+-# undef PRIoFAST8
+-# define PRIoFAST8 "o"
+-#endif
+-#if !defined PRIuFAST8 || PRI_MACROS_BROKEN
+-# undef PRIuFAST8
+-# define PRIuFAST8 "u"
+-#endif
+-#if !defined PRIxFAST8 || PRI_MACROS_BROKEN
+-# undef PRIxFAST8
+-# define PRIxFAST8 "x"
+-#endif
+-#if !defined PRIXFAST8 || PRI_MACROS_BROKEN
+-# undef PRIXFAST8
+-# define PRIXFAST8 "X"
+-#endif
+-#if !defined PRIdFAST16 || PRI_MACROS_BROKEN
+-# undef PRIdFAST16
+-# define PRIdFAST16 "d"
+-#endif
+-#if !defined PRIiFAST16 || PRI_MACROS_BROKEN
+-# undef PRIiFAST16
+-# define PRIiFAST16 "i"
+-#endif
+-#if !defined PRIoFAST16 || PRI_MACROS_BROKEN
+-# undef PRIoFAST16
+-# define PRIoFAST16 "o"
+-#endif
+-#if !defined PRIuFAST16 || PRI_MACROS_BROKEN
+-# undef PRIuFAST16
+-# define PRIuFAST16 "u"
+-#endif
+-#if !defined PRIxFAST16 || PRI_MACROS_BROKEN
+-# undef PRIxFAST16
+-# define PRIxFAST16 "x"
+-#endif
+-#if !defined PRIXFAST16 || PRI_MACROS_BROKEN
+-# undef PRIXFAST16
+-# define PRIXFAST16 "X"
+-#endif
+-#if !defined PRIdFAST32 || PRI_MACROS_BROKEN
+-# undef PRIdFAST32
+-# define PRIdFAST32 "d"
+-#endif
+-#if !defined PRIiFAST32 || PRI_MACROS_BROKEN
+-# undef PRIiFAST32
+-# define PRIiFAST32 "i"
+-#endif
+-#if !defined PRIoFAST32 || PRI_MACROS_BROKEN
+-# undef PRIoFAST32
+-# define PRIoFAST32 "o"
+-#endif
+-#if !defined PRIuFAST32 || PRI_MACROS_BROKEN
+-# undef PRIuFAST32
+-# define PRIuFAST32 "u"
+-#endif
+-#if !defined PRIxFAST32 || PRI_MACROS_BROKEN
+-# undef PRIxFAST32
+-# define PRIxFAST32 "x"
+-#endif
+-#if !defined PRIXFAST32 || PRI_MACROS_BROKEN
+-# undef PRIXFAST32
+-# define PRIXFAST32 "X"
+-#endif
+-#if !defined PRIdFAST64 || PRI_MACROS_BROKEN
+-# undef PRIdFAST64
+-# define PRIdFAST64 PRId64
+-#endif
+-#if !defined PRIiFAST64 || PRI_MACROS_BROKEN
+-# undef PRIiFAST64
+-# define PRIiFAST64 PRIi64
+-#endif
+-#if !defined PRIoFAST64 || PRI_MACROS_BROKEN
+-# undef PRIoFAST64
+-# define PRIoFAST64 PRIo64
+-#endif
+-#if !defined PRIuFAST64 || PRI_MACROS_BROKEN
+-# undef PRIuFAST64
+-# define PRIuFAST64 PRIu64
+-#endif
+-#if !defined PRIxFAST64 || PRI_MACROS_BROKEN
+-# undef PRIxFAST64
+-# define PRIxFAST64 PRIx64
+-#endif
+-#if !defined PRIXFAST64 || PRI_MACROS_BROKEN
+-# undef PRIXFAST64
+-# define PRIXFAST64 PRIX64
+-#endif
+-#if !defined PRIdMAX || PRI_MACROS_BROKEN
+-# undef PRIdMAX
+-# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld")
+-#endif
+-#if !defined PRIiMAX || PRI_MACROS_BROKEN
+-# undef PRIiMAX
+-# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli")
+-#endif
+-#if !defined PRIoMAX || PRI_MACROS_BROKEN
+-# undef PRIoMAX
+-# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo")
+-#endif
+-#if !defined PRIuMAX || PRI_MACROS_BROKEN
+-# undef PRIuMAX
+-# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu")
+-#endif
+-#if !defined PRIxMAX || PRI_MACROS_BROKEN
+-# undef PRIxMAX
+-# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx")
+-#endif
+-#if !defined PRIXMAX || PRI_MACROS_BROKEN
+-# undef PRIXMAX
+-# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX")
+-#endif
+-#if !defined PRIdPTR || PRI_MACROS_BROKEN
+-# undef PRIdPTR
+-# define PRIdPTR \
+-  (sizeof (void *) == sizeof (long) ? "ld" : \
+-   sizeof (void *) == sizeof (int) ? "d" : \
+-   "lld")
+-#endif
+-#if !defined PRIiPTR || PRI_MACROS_BROKEN
+-# undef PRIiPTR
+-# define PRIiPTR \
+-  (sizeof (void *) == sizeof (long) ? "li" : \
+-   sizeof (void *) == sizeof (int) ? "i" : \
+-   "lli")
+-#endif
+-#if !defined PRIoPTR || PRI_MACROS_BROKEN
+-# undef PRIoPTR
+-# define PRIoPTR \
+-  (sizeof (void *) == sizeof (long) ? "lo" : \
+-   sizeof (void *) == sizeof (int) ? "o" : \
+-   "llo")
+-#endif
+-#if !defined PRIuPTR || PRI_MACROS_BROKEN
+-# undef PRIuPTR
+-# define PRIuPTR \
+-  (sizeof (void *) == sizeof (long) ? "lu" : \
+-   sizeof (void *) == sizeof (int) ? "u" : \
+-   "llu")
+-#endif
+-#if !defined PRIxPTR || PRI_MACROS_BROKEN
+-# undef PRIxPTR
+-# define PRIxPTR \
+-  (sizeof (void *) == sizeof (long) ? "lx" : \
+-   sizeof (void *) == sizeof (int) ? "x" : \
+-   "llx")
+-#endif
+-#if !defined PRIXPTR || PRI_MACROS_BROKEN
+-# undef PRIXPTR
+-# define PRIXPTR \
+-  (sizeof (void *) == sizeof (long) ? "lX" : \
+-   sizeof (void *) == sizeof (int) ? "X" : \
+-   "llX")
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ISO C functions.  This is required by the standard
+-   because some ISO C functions will require linking with this object
+-   file and the name space must not be polluted.  */
+-# define open(name, flags)	open_not_cancel_2 (name, flags)
+-# define close(fd)		close_not_cancel_no_status (fd)
+-# define read(fd, buf, n)	read_not_cancel (fd, buf, n)
+-# define mmap(addr, len, prot, flags, fd, offset) \
+-  __mmap (addr, len, prot, flags, fd, offset)
+-# define munmap(addr, len)	__munmap (addr, len)
+-#endif
+-
+-/* For those losing systems which don't have `alloca' we have to add
+-   some additional code emulating it.  */
+-#ifdef HAVE_ALLOCA
+-# define freea(p) /* nothing */
+-#else
+-# define alloca(n) malloc (n)
+-# define freea(p) free (p)
+-#endif
+-
+-/* For systems that distinguish between text and binary I/O.
+-   O_BINARY is usually declared in <fcntl.h>. */
+-#if !defined O_BINARY && defined _O_BINARY
+-  /* For MSC-compatible compilers.  */
+-# define O_BINARY _O_BINARY
+-# define O_TEXT _O_TEXT
+-#endif
+-#ifdef __BEOS__
+-  /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect.  */
+-# undef O_BINARY
+-# undef O_TEXT
+-#endif
+-/* On reasonable systems, binary I/O is the default.  */
+-#ifndef O_BINARY
+-# define O_BINARY 0
+-#endif
+-
+-
+-/* We need a sign, whether a new catalog was loaded, which can be associated
+-   with all translations.  This is important if the translations are
+-   cached by one of GCC's features.  */
+-int _nl_msg_cat_cntr;
+-
+-
+-/* Expand a system dependent string segment.  Return NULL if unsupported.  */
+-static const char *
+-get_sysdep_segment_value (const char *name)
+-{
+-  /* Test for an ISO C 99 section 7.8.1 format string directive.
+-     Syntax:
+-     P R I { d | i | o | u | x | X }
+-     { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR }  */
+-  /* We don't use a table of 14 times 6 'const char *' strings here, because
+-     data relocations cost startup time.  */
+-  if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I')
+-    {
+-      if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u'
+-	  || name[3] == 'x' || name[3] == 'X')
+-	{
+-	  if (name[4] == '8' && name[5] == '\0')
+-	    {
+-	      if (name[3] == 'd')
+-		return PRId8;
+-	      if (name[3] == 'i')
+-		return PRIi8;
+-	      if (name[3] == 'o')
+-		return PRIo8;
+-	      if (name[3] == 'u')
+-		return PRIu8;
+-	      if (name[3] == 'x')
+-		return PRIx8;
+-	      if (name[3] == 'X')
+-		return PRIX8;
+-	      abort ();
+-	    }
+-	  if (name[4] == '1' && name[5] == '6' && name[6] == '\0')
+-	    {
+-	      if (name[3] == 'd')
+-		return PRId16;
+-	      if (name[3] == 'i')
+-		return PRIi16;
+-	      if (name[3] == 'o')
+-		return PRIo16;
+-	      if (name[3] == 'u')
+-		return PRIu16;
+-	      if (name[3] == 'x')
+-		return PRIx16;
+-	      if (name[3] == 'X')
+-		return PRIX16;
+-	      abort ();
+-	    }
+-	  if (name[4] == '3' && name[5] == '2' && name[6] == '\0')
+-	    {
+-	      if (name[3] == 'd')
+-		return PRId32;
+-	      if (name[3] == 'i')
+-		return PRIi32;
+-	      if (name[3] == 'o')
+-		return PRIo32;
+-	      if (name[3] == 'u')
+-		return PRIu32;
+-	      if (name[3] == 'x')
+-		return PRIx32;
+-	      if (name[3] == 'X')
+-		return PRIX32;
+-	      abort ();
+-	    }
+-	  if (name[4] == '6' && name[5] == '4' && name[6] == '\0')
+-	    {
+-	      if (name[3] == 'd')
+-		return PRId64;
+-	      if (name[3] == 'i')
+-		return PRIi64;
+-	      if (name[3] == 'o')
+-		return PRIo64;
+-	      if (name[3] == 'u')
+-		return PRIu64;
+-	      if (name[3] == 'x')
+-		return PRIx64;
+-	      if (name[3] == 'X')
+-		return PRIX64;
+-	      abort ();
+-	    }
+-	  if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A'
+-	      && name[7] == 'S' && name[8] == 'T')
+-	    {
+-	      if (name[9] == '8' && name[10] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdLEAST8;
+-		  if (name[3] == 'i')
+-		    return PRIiLEAST8;
+-		  if (name[3] == 'o')
+-		    return PRIoLEAST8;
+-		  if (name[3] == 'u')
+-		    return PRIuLEAST8;
+-		  if (name[3] == 'x')
+-		    return PRIxLEAST8;
+-		  if (name[3] == 'X')
+-		    return PRIXLEAST8;
+-		  abort ();
+-		}
+-	      if (name[9] == '1' && name[10] == '6' && name[11] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdLEAST16;
+-		  if (name[3] == 'i')
+-		    return PRIiLEAST16;
+-		  if (name[3] == 'o')
+-		    return PRIoLEAST16;
+-		  if (name[3] == 'u')
+-		    return PRIuLEAST16;
+-		  if (name[3] == 'x')
+-		    return PRIxLEAST16;
+-		  if (name[3] == 'X')
+-		    return PRIXLEAST16;
+-		  abort ();
+-		}
+-	      if (name[9] == '3' && name[10] == '2' && name[11] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdLEAST32;
+-		  if (name[3] == 'i')
+-		    return PRIiLEAST32;
+-		  if (name[3] == 'o')
+-		    return PRIoLEAST32;
+-		  if (name[3] == 'u')
+-		    return PRIuLEAST32;
+-		  if (name[3] == 'x')
+-		    return PRIxLEAST32;
+-		  if (name[3] == 'X')
+-		    return PRIXLEAST32;
+-		  abort ();
+-		}
+-	      if (name[9] == '6' && name[10] == '4' && name[11] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdLEAST64;
+-		  if (name[3] == 'i')
+-		    return PRIiLEAST64;
+-		  if (name[3] == 'o')
+-		    return PRIoLEAST64;
+-		  if (name[3] == 'u')
+-		    return PRIuLEAST64;
+-		  if (name[3] == 'x')
+-		    return PRIxLEAST64;
+-		  if (name[3] == 'X')
+-		    return PRIXLEAST64;
+-		  abort ();
+-		}
+-	    }
+-	  if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S'
+-	      && name[7] == 'T')
+-	    {
+-	      if (name[8] == '8' && name[9] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdFAST8;
+-		  if (name[3] == 'i')
+-		    return PRIiFAST8;
+-		  if (name[3] == 'o')
+-		    return PRIoFAST8;
+-		  if (name[3] == 'u')
+-		    return PRIuFAST8;
+-		  if (name[3] == 'x')
+-		    return PRIxFAST8;
+-		  if (name[3] == 'X')
+-		    return PRIXFAST8;
+-		  abort ();
+-		}
+-	      if (name[8] == '1' && name[9] == '6' && name[10] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdFAST16;
+-		  if (name[3] == 'i')
+-		    return PRIiFAST16;
+-		  if (name[3] == 'o')
+-		    return PRIoFAST16;
+-		  if (name[3] == 'u')
+-		    return PRIuFAST16;
+-		  if (name[3] == 'x')
+-		    return PRIxFAST16;
+-		  if (name[3] == 'X')
+-		    return PRIXFAST16;
+-		  abort ();
+-		}
+-	      if (name[8] == '3' && name[9] == '2' && name[10] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdFAST32;
+-		  if (name[3] == 'i')
+-		    return PRIiFAST32;
+-		  if (name[3] == 'o')
+-		    return PRIoFAST32;
+-		  if (name[3] == 'u')
+-		    return PRIuFAST32;
+-		  if (name[3] == 'x')
+-		    return PRIxFAST32;
+-		  if (name[3] == 'X')
+-		    return PRIXFAST32;
+-		  abort ();
+-		}
+-	      if (name[8] == '6' && name[9] == '4' && name[10] == '\0')
+-		{
+-		  if (name[3] == 'd')
+-		    return PRIdFAST64;
+-		  if (name[3] == 'i')
+-		    return PRIiFAST64;
+-		  if (name[3] == 'o')
+-		    return PRIoFAST64;
+-		  if (name[3] == 'u')
+-		    return PRIuFAST64;
+-		  if (name[3] == 'x')
+-		    return PRIxFAST64;
+-		  if (name[3] == 'X')
+-		    return PRIXFAST64;
+-		  abort ();
+-		}
+-	    }
+-	  if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X'
+-	      && name[7] == '\0')
+-	    {
+-	      if (name[3] == 'd')
+-		return PRIdMAX;
+-	      if (name[3] == 'i')
+-		return PRIiMAX;
+-	      if (name[3] == 'o')
+-		return PRIoMAX;
+-	      if (name[3] == 'u')
+-		return PRIuMAX;
+-	      if (name[3] == 'x')
+-		return PRIxMAX;
+-	      if (name[3] == 'X')
+-		return PRIXMAX;
+-	      abort ();
+-	    }
+-	  if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R'
+-	      && name[7] == '\0')
+-	    {
+-	      if (name[3] == 'd')
+-		return PRIdPTR;
+-	      if (name[3] == 'i')
+-		return PRIiPTR;
+-	      if (name[3] == 'o')
+-		return PRIoPTR;
+-	      if (name[3] == 'u')
+-		return PRIuPTR;
+-	      if (name[3] == 'x')
+-		return PRIxPTR;
+-	      if (name[3] == 'X')
+-		return PRIXPTR;
+-	      abort ();
+-	    }
+-	}
+-    }
+-  /* Test for a glibc specific printf() format directive flag.  */
+-  if (name[0] == 'I' && name[1] == '\0')
+-    {
+-#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+-      /* The 'I' flag, in numeric format directives, replaces ASCII digits
+-	 with the 'outdigits' defined in the LC_CTYPE locale facet.  This is
+-	 used for Farsi (Persian) and maybe Arabic.  */
+-      return "I";
+-#else
+-      return "";
+-#endif
+-    }
+-  /* Other system dependent strings are not valid.  */
+-  return NULL;
+-}
+-
+-/* Load the message catalogs specified by FILENAME.  If it is no valid
+-   message catalog do nothing.  */
+-void
+-internal_function
+-_nl_load_domain (struct loaded_l10nfile *domain_file,
+-		 struct binding *domainbinding)
+-{
+-  __libc_lock_define_initialized_recursive (static, lock)
+-  int fd = -1;
+-  size_t size;
+-#ifdef _LIBC
+-  struct stat64 st;
+-#else
+-  struct stat st;
+-#endif
+-  struct mo_file_header *data = (struct mo_file_header *) -1;
+-  int use_mmap = 0;
+-  struct loaded_domain *domain;
+-  int revision;
+-  const char *nullentry;
+-  size_t nullentrylen;
+-
+-  __libc_lock_lock_recursive (lock);
+-  if (domain_file->decided != 0)
+-    {
+-      /* There are two possibilities:
+-
+-	 + this is the same thread calling again during this initialization
+-	   via _nl_find_msg.  We have initialized everything this call needs.
+-
+-	 + this is another thread which tried to initialize this object.
+-	   Not necessary anymore since if the lock is available this
+-	   is finished.
+-      */
+-      goto done;
+-    }
+-
+-  domain_file->decided = -1;
+-  domain_file->data = NULL;
+-
+-  /* Note that it would be useless to store domainbinding in domain_file
+-     because domainbinding might be == NULL now but != NULL later (after
+-     a call to bind_textdomain_codeset).  */
+-
+-  /* If the record does not represent a valid locale the FILENAME
+-     might be NULL.  This can happen when according to the given
+-     specification the locale file name is different for XPG and CEN
+-     syntax.  */
+-  if (domain_file->filename == NULL)
+-    goto out;
+-
+-  /* Try to open the addressed file.  */
+-  fd = open (domain_file->filename, O_RDONLY | O_BINARY);
+-  if (fd == -1)
+-    goto out;
+-
+-  /* We must know about the size of the file.  */
+-  if (
+-#ifdef _LIBC
+-      __builtin_expect (fstat64 (fd, &st) != 0, 0)
+-#else
+-      __builtin_expect (fstat (fd, &st) != 0, 0)
+-#endif
+-      || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
+-      || __builtin_expect (size < sizeof (struct mo_file_header), 0))
+-    /* Something went wrong.  */
+-    goto out;
+-
+-#ifdef HAVE_MMAP
+-  /* Now we are ready to load the file.  If mmap() is available we try
+-     this first.  If not available or it failed we try to load it.  */
+-  data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
+-					 MAP_PRIVATE, fd, 0);
+-
+-  if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
+-    {
+-      /* mmap() call was successful.  */
+-      close (fd);
+-      fd = -1;
+-      use_mmap = 1;
+-    }
+-#endif
+-
+-  /* If the data is not yet available (i.e. mmap'ed) we try to load
+-     it manually.  */
+-  if (data == (struct mo_file_header *) -1)
+-    {
+-      size_t to_read;
+-      char *read_ptr;
+-
+-      data = (struct mo_file_header *) malloc (size);
+-      if (data == NULL)
+-	goto out;
+-
+-      to_read = size;
+-      read_ptr = (char *) data;
+-      do
+-	{
+-	  long int nb = (long int) read (fd, read_ptr, to_read);
+-	  if (nb <= 0)
+-	    {
+-#ifdef EINTR
+-	      if (nb == -1 && errno == EINTR)
+-		continue;
+-#endif
+-	      goto out;
+-	    }
+-	  read_ptr += nb;
+-	  to_read -= nb;
+-	}
+-      while (to_read > 0);
+-
+-      close (fd);
+-      fd = -1;
+-    }
+-
+-  /* Using the magic number we can test whether it really is a message
+-     catalog file.  */
+-  if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
+-			0))
+-    {
+-      /* The magic number is wrong: not a message catalog file.  */
+-#ifdef HAVE_MMAP
+-      if (use_mmap)
+-	munmap ((caddr_t) data, size);
+-      else
+-#endif
+-	free (data);
+-      goto out;
+-    }
+-
+-  domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
+-  if (domain == NULL)
+-    goto out;
+-  domain_file->data = domain;
+-
+-  domain->data = (char *) data;
+-  domain->use_mmap = use_mmap;
+-  domain->mmap_size = size;
+-  domain->must_swap = data->magic != _MAGIC;
+-  domain->malloced = NULL;
+-
+-  /* Fill in the information about the available tables.  */
+-  revision = W (domain->must_swap, data->revision);
+-  /* We support only the major revisions 0 and 1.  */
+-  switch (revision >> 16)
+-    {
+-    case 0:
+-    case 1:
+-      domain->nstrings = W (domain->must_swap, data->nstrings);
+-      domain->orig_tab = (const struct string_desc *)
+-	((char *) data + W (domain->must_swap, data->orig_tab_offset));
+-      domain->trans_tab = (const struct string_desc *)
+-	((char *) data + W (domain->must_swap, data->trans_tab_offset));
+-      domain->hash_size = W (domain->must_swap, data->hash_tab_size);
+-      domain->hash_tab =
+-	(domain->hash_size > 2
+-	 ? (const nls_uint32 *)
+-	   ((char *) data + W (domain->must_swap, data->hash_tab_offset))
+-	 : NULL);
+-      domain->must_swap_hash_tab = domain->must_swap;
+-
+-      /* Now dispatch on the minor revision.  */
+-      switch (revision & 0xffff)
+-	{
+-	case 0:
+-	  domain->n_sysdep_strings = 0;
+-	  domain->orig_sysdep_tab = NULL;
+-	  domain->trans_sysdep_tab = NULL;
+-	  break;
+-	case 1:
+-	default:
+-	  {
+-	    nls_uint32 n_sysdep_strings;
+-
+-	    if (domain->hash_tab == NULL)
+-	      /* This is invalid.  These minor revisions need a hash table.  */
+-	      goto invalid;
+-
+-	    n_sysdep_strings =
+-	      W (domain->must_swap, data->n_sysdep_strings);
+-	    if (n_sysdep_strings > 0)
+-	      {
+-		nls_uint32 n_sysdep_segments;
+-		const struct sysdep_segment *sysdep_segments;
+-		const char **sysdep_segment_values;
+-		const nls_uint32 *orig_sysdep_tab;
+-		const nls_uint32 *trans_sysdep_tab;
+-		nls_uint32 n_inmem_sysdep_strings;
+-		size_t memneed;
+-		char *mem;
+-		struct sysdep_string_desc *inmem_orig_sysdep_tab;
+-		struct sysdep_string_desc *inmem_trans_sysdep_tab;
+-		nls_uint32 *inmem_hash_tab;
+-		unsigned int i, j;
+-
+-		/* Get the values of the system dependent segments.  */
+-		n_sysdep_segments =
+-		  W (domain->must_swap, data->n_sysdep_segments);
+-		sysdep_segments = (const struct sysdep_segment *)
+-		  ((char *) data
+-		   + W (domain->must_swap, data->sysdep_segments_offset));
+-		sysdep_segment_values =
+-		  (const char **)
+-		  alloca (n_sysdep_segments * sizeof (const char *));
+-		for (i = 0; i < n_sysdep_segments; i++)
+-		  {
+-		    const char *name =
+-		      (char *) data
+-		      + W (domain->must_swap, sysdep_segments[i].offset);
+-		    nls_uint32 namelen =
+-		      W (domain->must_swap, sysdep_segments[i].length);
+-
+-		    if (!(namelen > 0 && name[namelen - 1] == '\0'))
+-		      {
+-			freea (sysdep_segment_values);
+-			goto invalid;
+-		      }
+-
+-		    sysdep_segment_values[i] = get_sysdep_segment_value (name);
+-		  }
+-
+-		orig_sysdep_tab = (const nls_uint32 *)
+-		  ((char *) data
+-		   + W (domain->must_swap, data->orig_sysdep_tab_offset));
+-		trans_sysdep_tab = (const nls_uint32 *)
+-		  ((char *) data
+-		   + W (domain->must_swap, data->trans_sysdep_tab_offset));
+-
+-		/* Compute the amount of additional memory needed for the
+-		   system dependent strings and the augmented hash table.
+-		   At the same time, also drop string pairs which refer to
+-		   an undefined system dependent segment.  */
+-		n_inmem_sysdep_strings = 0;
+-		memneed = domain->hash_size * sizeof (nls_uint32);
+-		for (i = 0; i < n_sysdep_strings; i++)
+-		  {
+-		    int valid = 1;
+-		    size_t needs[2];
+-
+-		    for (j = 0; j < 2; j++)
+-		      {
+-			const struct sysdep_string *sysdep_string =
+-			  (const struct sysdep_string *)
+-			  ((char *) data
+-			   + W (domain->must_swap,
+-				j == 0
+-				? orig_sysdep_tab[i]
+-				: trans_sysdep_tab[i]));
+-			size_t need = 0;
+-			const struct segment_pair *p = sysdep_string->segments;
+-
+-			if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
+-			  for (p = sysdep_string->segments;; p++)
+-			    {
+-			      nls_uint32 sysdepref;
+-
+-			      need += W (domain->must_swap, p->segsize);
+-
+-			      sysdepref = W (domain->must_swap, p->sysdepref);
+-			      if (sysdepref == SEGMENTS_END)
+-				break;
+-
+-			      if (sysdepref >= n_sysdep_segments)
+-				{
+-				  /* Invalid.  */
+-				  freea (sysdep_segment_values);
+-				  goto invalid;
+-				}
+-
+-			      if (sysdep_segment_values[sysdepref] == NULL)
+-				{
+-				  /* This particular string pair is invalid.  */
+-				  valid = 0;
+-				  break;
+-				}
+-
+-			      need += strlen (sysdep_segment_values[sysdepref]);
+-			    }
+-
+-			needs[j] = need;
+-			if (!valid)
+-			  break;
+-		      }
+-
+-		    if (valid)
+-		      {
+-			n_inmem_sysdep_strings++;
+-			memneed += needs[0] + needs[1];
+-		      }
+-		  }
+-		memneed += 2 * n_inmem_sysdep_strings
+-			   * sizeof (struct sysdep_string_desc);
+-
+-		if (n_inmem_sysdep_strings > 0)
+-		  {
+-		    unsigned int k;
+-
+-		    /* Allocate additional memory.  */
+-		    mem = (char *) malloc (memneed);
+-		    if (mem == NULL)
+-		      goto invalid;
+-
+-		    domain->malloced = mem;
+-		    inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
+-		    mem += n_inmem_sysdep_strings
+-			   * sizeof (struct sysdep_string_desc);
+-		    inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
+-		    mem += n_inmem_sysdep_strings
+-			   * sizeof (struct sysdep_string_desc);
+-		    inmem_hash_tab = (nls_uint32 *) mem;
+-		    mem += domain->hash_size * sizeof (nls_uint32);
+-
+-		    /* Compute the system dependent strings.  */
+-		    k = 0;
+-		    for (i = 0; i < n_sysdep_strings; i++)
+-		      {
+-			int valid = 1;
+-
+-			for (j = 0; j < 2; j++)
+-			  {
+-			    const struct sysdep_string *sysdep_string =
+-			      (const struct sysdep_string *)
+-			      ((char *) data
+-			       + W (domain->must_swap,
+-				    j == 0
+-				    ? orig_sysdep_tab[i]
+-				    : trans_sysdep_tab[i]));
+-			    const struct segment_pair *p =
+-			      sysdep_string->segments;
+-
+-			    if (W (domain->must_swap, p->sysdepref)
+-				!= SEGMENTS_END)
+-			      for (p = sysdep_string->segments;; p++)
+-				{
+-				  nls_uint32 sysdepref;
+-
+-				  sysdepref =
+-				    W (domain->must_swap, p->sysdepref);
+-				  if (sysdepref == SEGMENTS_END)
+-				    break;
+-
+-				  if (sysdep_segment_values[sysdepref] == NULL)
+-				    {
+-				      /* This particular string pair is
+-					 invalid.  */
+-				      valid = 0;
+-				      break;
+-				    }
+-				}
+-
+-			    if (!valid)
+-			      break;
+-			  }
+-
+-			if (valid)
+-			  {
+-			    for (j = 0; j < 2; j++)
+-			      {
+-				const struct sysdep_string *sysdep_string =
+-				  (const struct sysdep_string *)
+-				  ((char *) data
+-				   + W (domain->must_swap,
+-					j == 0
+-					? orig_sysdep_tab[i]
+-					: trans_sysdep_tab[i]));
+-				const char *static_segments =
+-				  (char *) data
+-				  + W (domain->must_swap, sysdep_string->offset);
+-				const struct segment_pair *p =
+-				  sysdep_string->segments;
+-
+-				/* Concatenate the segments, and fill
+-				   inmem_orig_sysdep_tab[k] (for j == 0) and
+-				   inmem_trans_sysdep_tab[k] (for j == 1).  */
+-
+-				struct sysdep_string_desc *inmem_tab_entry =
+-				  (j == 0
+-				   ? inmem_orig_sysdep_tab
+-				   : inmem_trans_sysdep_tab)
+-				  + k;
+-
+-				if (W (domain->must_swap, p->sysdepref)
+-				    == SEGMENTS_END)
+-				  {
+-				    /* Only one static segment.  */
+-				    inmem_tab_entry->length =
+-				      W (domain->must_swap, p->segsize);
+-				    inmem_tab_entry->pointer = static_segments;
+-				  }
+-				else
+-				  {
+-				    inmem_tab_entry->pointer = mem;
+-
+-				    for (p = sysdep_string->segments;; p++)
+-				      {
+-					nls_uint32 segsize =
+-					  W (domain->must_swap, p->segsize);
+-					nls_uint32 sysdepref =
+-					  W (domain->must_swap, p->sysdepref);
+-					size_t n;
+-
+-					if (segsize > 0)
+-					  {
+-					    memcpy (mem, static_segments, segsize);
+-					    mem += segsize;
+-					    static_segments += segsize;
+-					  }
+-
+-					if (sysdepref == SEGMENTS_END)
+-					  break;
+-
+-					n = strlen (sysdep_segment_values[sysdepref]);
+-					memcpy (mem, sysdep_segment_values[sysdepref], n);
+-					mem += n;
+-				      }
+-
+-				    inmem_tab_entry->length =
+-				      mem - inmem_tab_entry->pointer;
+-				  }
+-			      }
+-
+-			    k++;
+-			  }
+-		      }
+-		    if (k != n_inmem_sysdep_strings)
+-		      abort ();
+-
+-		    /* Compute the augmented hash table.  */
+-		    for (i = 0; i < domain->hash_size; i++)
+-		      inmem_hash_tab[i] =
+-			W (domain->must_swap_hash_tab, domain->hash_tab[i]);
+-		    for (i = 0; i < n_inmem_sysdep_strings; i++)
+-		      {
+-			const char *msgid = inmem_orig_sysdep_tab[i].pointer;
+-			nls_uint32 hash_val = __hash_string (msgid);
+-			nls_uint32 idx = hash_val % domain->hash_size;
+-			nls_uint32 incr =
+-			  1 + (hash_val % (domain->hash_size - 2));
+-
+-			for (;;)
+-			  {
+-			    if (inmem_hash_tab[idx] == 0)
+-			      {
+-				/* Hash table entry is empty.  Use it.  */
+-				inmem_hash_tab[idx] = 1 + domain->nstrings + i;
+-				break;
+-			      }
+-
+-			    if (idx >= domain->hash_size - incr)
+-			      idx -= domain->hash_size - incr;
+-			    else
+-			      idx += incr;
+-			  }
+-		      }
+-
+-		    domain->n_sysdep_strings = n_inmem_sysdep_strings;
+-		    domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
+-		    domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
+-
+-		    domain->hash_tab = inmem_hash_tab;
+-		    domain->must_swap_hash_tab = 0;
+-		  }
+-		else
+-		  {
+-		    domain->n_sysdep_strings = 0;
+-		    domain->orig_sysdep_tab = NULL;
+-		    domain->trans_sysdep_tab = NULL;
+-		  }
+-
+-		freea (sysdep_segment_values);
+-	      }
+-	    else
+-	      {
+-		domain->n_sysdep_strings = 0;
+-		domain->orig_sysdep_tab = NULL;
+-		domain->trans_sysdep_tab = NULL;
+-	      }
+-	  }
+-	  break;
+-	}
+-      break;
+-    default:
+-      /* This is an invalid revision.  */
+-    invalid:
+-      /* This is an invalid .mo file.  */
+-      if (domain->malloced)
+-	free (domain->malloced);
+-#ifdef HAVE_MMAP
+-      if (use_mmap)
+-	munmap ((caddr_t) data, size);
+-      else
+-#endif
+-	free (data);
+-      free (domain);
+-      domain_file->data = NULL;
+-      goto out;
+-    }
+-
+-  /* No caches of converted translations so far.  */
+-  domain->conversions = NULL;
+-  domain->nconversions = 0;
+-  gl_rwlock_init (domain->conversions_lock);
+-
+-  /* Get the header entry and look for a plural specification.  */
+-#ifdef IN_LIBGLOCALE
+-  nullentry =
+-    _nl_find_msg (domain_file, domainbinding, NULL, "", &nullentrylen);
+-#else
+-  nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
+-#endif
+-  EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
+-
+- out:
+-  if (fd != -1)
+-    close (fd);
+-
+-  domain_file->decided = 1;
+-
+- done:
+-  __libc_lock_unlock_recursive (lock);
+-}
+-
+-
+-#ifdef _LIBC
+-void
+-internal_function __libc_freeres_fn_section
+-_nl_unload_domain (struct loaded_domain *domain)
+-{
+-  size_t i;
+-
+-  if (domain->plural != &__gettext_germanic_plural)
+-    __gettext_free_exp ((struct expression *) domain->plural);
+-
+-  for (i = 0; i < domain->nconversions; i++)
+-    {
+-      struct converted_domain *convd = &domain->conversions[i];
+-
+-      free (convd->encoding);
+-      if (convd->conv_tab != NULL && convd->conv_tab != (char **) -1)
+-	free (convd->conv_tab);
+-      if (convd->conv != (__gconv_t) -1)
+-	__gconv_close (convd->conv);
+-    }
+-  if (domain->conversions != NULL)
+-    free (domain->conversions);
+-  __libc_rwlock_fini (domain->conversions_lock);
+-
+-  if (domain->malloced)
+-    free (domain->malloced);
+-
+-# ifdef _POSIX_MAPPED_FILES
+-  if (domain->use_mmap)
+-    munmap ((caddr_t) domain->data, domain->mmap_size);
+-  else
+-# endif	/* _POSIX_MAPPED_FILES */
+-    free ((void *) domain->data);
+-
+-  free (domain);
+-}
+-#endif
+--- a/intl/localcharset.c
++++ /dev/null
+@@ -1,461 +0,0 @@
+-/* Determine a canonical name for the current locale's character encoding.
+-
+-   Copyright (C) 2000-2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Written by Bruno Haible <bruno@clisp.org>.  */
+-
+-#include <config.h>
+-
+-/* Specification.  */
+-#include "localcharset.h"
+-
+-#include <stddef.h>
+-#include <stdio.h>
+-#include <string.h>
+-#include <stdlib.h>
+-
+-#if defined _WIN32 || defined __WIN32__
+-# define WIN32_NATIVE
+-#endif
+-
+-#if defined __EMX__
+-/* Assume EMX program runs on OS/2, even if compiled under DOS.  */
+-# define OS2
+-#endif
+-
+-#if !defined WIN32_NATIVE
+-# if HAVE_LANGINFO_CODESET
+-#  include <langinfo.h>
+-# else
+-#  if 0 /* see comment below */
+-#   include <locale.h>
+-#  endif
+-# endif
+-# ifdef __CYGWIN__
+-#  define WIN32_LEAN_AND_MEAN
+-#  include <windows.h>
+-# endif
+-#elif defined WIN32_NATIVE
+-# define WIN32_LEAN_AND_MEAN
+-# include <windows.h>
+-#endif
+-#if defined OS2
+-# define INCL_DOS
+-# include <os2.h>
+-#endif
+-
+-#if ENABLE_RELOCATABLE
+-# include "relocatable.h"
+-#else
+-# define relocate(pathname) (pathname)
+-#endif
+-
+-/* Get LIBDIR.  */
+-#ifndef LIBDIR
+-# include "configmake.h"
+-#endif
+-
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+-  /* Win32, Cygwin, OS/2, DOS */
+-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+-#endif
+-
+-#ifndef DIRECTORY_SEPARATOR
+-# define DIRECTORY_SEPARATOR '/'
+-#endif
+-
+-#ifndef ISSLASH
+-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+-#endif
+-
+-#if HAVE_DECL_GETC_UNLOCKED
+-# undef getc
+-# define getc getc_unlocked
+-#endif
+-
+-/* The following static variable is declared 'volatile' to avoid a
+-   possible multithread problem in the function get_charset_aliases. If we
+-   are running in a threaded environment, and if two threads initialize
+-   'charset_aliases' simultaneously, both will produce the same value,
+-   and everything will be ok if the two assignments to 'charset_aliases'
+-   are atomic. But I don't know what will happen if the two assignments mix.  */
+-#if __STDC__ != 1
+-# define volatile /* empty */
+-#endif
+-/* Pointer to the contents of the charset.alias file, if it has already been
+-   read, else NULL.  Its format is:
+-   ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0'  */
+-static const char * volatile charset_aliases;
+-
+-/* Return a pointer to the contents of the charset.alias file.  */
+-static const char *
+-get_charset_aliases (void)
+-{
+-  const char *cp;
+-
+-  cp = charset_aliases;
+-  if (cp == NULL)
+-    {
+-#if !(defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+-      FILE *fp;
+-      const char *dir;
+-      const char *base = "charset.alias";
+-      char *file_name;
+-
+-      /* Make it possible to override the charset.alias location.  This is
+-	 necessary for running the testsuite before "make install".  */
+-      dir = getenv ("CHARSETALIASDIR");
+-      if (dir == NULL || dir[0] == '\0')
+-	dir = relocate (LIBDIR);
+-
+-      /* Concatenate dir and base into freshly allocated file_name.  */
+-      {
+-	size_t dir_len = strlen (dir);
+-	size_t base_len = strlen (base);
+-	int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+-	file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+-	if (file_name != NULL)
+-	  {
+-	    memcpy (file_name, dir, dir_len);
+-	    if (add_slash)
+-	      file_name[dir_len] = DIRECTORY_SEPARATOR;
+-	    memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+-	  }
+-      }
+-
+-      if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
+-	/* Out of memory or file not found, treat it as empty.  */
+-	cp = "";
+-      else
+-	{
+-	  /* Parse the file's contents.  */
+-	  char *res_ptr = NULL;
+-	  size_t res_size = 0;
+-
+-	  for (;;)
+-	    {
+-	      int c;
+-	      char buf1[50+1];
+-	      char buf2[50+1];
+-	      size_t l1, l2;
+-	      char *old_res_ptr;
+-
+-	      c = getc (fp);
+-	      if (c == EOF)
+-		break;
+-	      if (c == '\n' || c == ' ' || c == '\t')
+-		continue;
+-	      if (c == '#')
+-		{
+-		  /* Skip comment, to end of line.  */
+-		  do
+-		    c = getc (fp);
+-		  while (!(c == EOF || c == '\n'));
+-		  if (c == EOF)
+-		    break;
+-		  continue;
+-		}
+-	      ungetc (c, fp);
+-	      if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+-		break;
+-	      l1 = strlen (buf1);
+-	      l2 = strlen (buf2);
+-	      old_res_ptr = res_ptr;
+-	      if (res_size == 0)
+-		{
+-		  res_size = l1 + 1 + l2 + 1;
+-		  res_ptr = (char *) malloc (res_size + 1);
+-		}
+-	      else
+-		{
+-		  res_size += l1 + 1 + l2 + 1;
+-		  res_ptr = (char *) realloc (res_ptr, res_size + 1);
+-		}
+-	      if (res_ptr == NULL)
+-		{
+-		  /* Out of memory. */
+-		  res_size = 0;
+-		  if (old_res_ptr != NULL)
+-		    free (old_res_ptr);
+-		  break;
+-		}
+-	      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+-	      strcpy (res_ptr + res_size - (l2 + 1), buf2);
+-	    }
+-	  fclose (fp);
+-	  if (res_size == 0)
+-	    cp = "";
+-	  else
+-	    {
+-	      *(res_ptr + res_size) = '\0';
+-	      cp = res_ptr;
+-	    }
+-	}
+-
+-      if (file_name != NULL)
+-	free (file_name);
+-
+-#else
+-
+-# if defined VMS
+-      /* To avoid the troubles of an extra file charset.alias_vms in the
+-	 sources of many GNU packages, simply inline the aliases here.  */
+-      /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+-	 "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+-	 section 10.7 "Handling Different Character Sets".  */
+-      cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+-	   "ISO8859-2" "\0" "ISO-8859-2" "\0"
+-	   "ISO8859-5" "\0" "ISO-8859-5" "\0"
+-	   "ISO8859-7" "\0" "ISO-8859-7" "\0"
+-	   "ISO8859-8" "\0" "ISO-8859-8" "\0"
+-	   "ISO8859-9" "\0" "ISO-8859-9" "\0"
+-	   /* Japanese */
+-	   "eucJP" "\0" "EUC-JP" "\0"
+-	   "SJIS" "\0" "SHIFT_JIS" "\0"
+-	   "DECKANJI" "\0" "DEC-KANJI" "\0"
+-	   "SDECKANJI" "\0" "EUC-JP" "\0"
+-	   /* Chinese */
+-	   "eucTW" "\0" "EUC-TW" "\0"
+-	   "DECHANYU" "\0" "DEC-HANYU" "\0"
+-	   "DECHANZI" "\0" "GB2312" "\0"
+-	   /* Korean */
+-	   "DECKOREAN" "\0" "EUC-KR" "\0";
+-# endif
+-
+-# if defined WIN32_NATIVE || defined __CYGWIN__
+-      /* To avoid the troubles of installing a separate file in the same
+-	 directory as the DLL and of retrieving the DLL's directory at
+-	 runtime, simply inline the aliases here.  */
+-
+-      cp = "CP936" "\0" "GBK" "\0"
+-	   "CP1361" "\0" "JOHAB" "\0"
+-	   "CP20127" "\0" "ASCII" "\0"
+-	   "CP20866" "\0" "KOI8-R" "\0"
+-	   "CP20936" "\0" "GB2312" "\0"
+-	   "CP21866" "\0" "KOI8-RU" "\0"
+-	   "CP28591" "\0" "ISO-8859-1" "\0"
+-	   "CP28592" "\0" "ISO-8859-2" "\0"
+-	   "CP28593" "\0" "ISO-8859-3" "\0"
+-	   "CP28594" "\0" "ISO-8859-4" "\0"
+-	   "CP28595" "\0" "ISO-8859-5" "\0"
+-	   "CP28596" "\0" "ISO-8859-6" "\0"
+-	   "CP28597" "\0" "ISO-8859-7" "\0"
+-	   "CP28598" "\0" "ISO-8859-8" "\0"
+-	   "CP28599" "\0" "ISO-8859-9" "\0"
+-	   "CP28605" "\0" "ISO-8859-15" "\0"
+-	   "CP38598" "\0" "ISO-8859-8" "\0"
+-	   "CP51932" "\0" "EUC-JP" "\0"
+-	   "CP51936" "\0" "GB2312" "\0"
+-	   "CP51949" "\0" "EUC-KR" "\0"
+-	   "CP51950" "\0" "EUC-TW" "\0"
+-	   "CP54936" "\0" "GB18030" "\0"
+-	   "CP65001" "\0" "UTF-8" "\0";
+-# endif
+-#endif
+-
+-      charset_aliases = cp;
+-    }
+-
+-  return cp;
+-}
+-
+-/* Determine the current locale's character encoding, and canonicalize it
+-   into one of the canonical names listed in config.charset.
+-   The result must not be freed; it is statically allocated.
+-   If the canonical name cannot be determined, the result is a non-canonical
+-   name.  */
+-
+-#ifdef STATIC
+-STATIC
+-#endif
+-const char *
+-locale_charset (void)
+-{
+-  const char *codeset;
+-  const char *aliases;
+-
+-#if !(defined WIN32_NATIVE || defined OS2)
+-
+-# if HAVE_LANGINFO_CODESET
+-
+-  /* Most systems support nl_langinfo (CODESET) nowadays.  */
+-  codeset = nl_langinfo (CODESET);
+-
+-#  ifdef __CYGWIN__
+-  /* Cygwin 2006 does not have locales.  nl_langinfo (CODESET) always
+-     returns "US-ASCII".  As long as this is not fixed, return the suffix
+-     of the locale name from the environment variables (if present) or
+-     the codepage as a number.  */
+-  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
+-    {
+-      const char *locale;
+-      static char buf[2 + 10 + 1];
+-
+-      locale = getenv ("LC_ALL");
+-      if (locale == NULL || locale[0] == '\0')
+-	{
+-	  locale = getenv ("LC_CTYPE");
+-	  if (locale == NULL || locale[0] == '\0')
+-	    locale = getenv ("LANG");
+-	}
+-      if (locale != NULL && locale[0] != '\0')
+-	{
+-	  /* If the locale name contains an encoding after the dot, return
+-	     it.  */
+-	  const char *dot = strchr (locale, '.');
+-
+-	  if (dot != NULL)
+-	    {
+-	      const char *modifier;
+-
+-	      dot++;
+-	      /* Look for the possible @... trailer and remove it, if any.  */
+-	      modifier = strchr (dot, '@');
+-	      if (modifier == NULL)
+-		return dot;
+-	      if (modifier - dot < sizeof (buf))
+-		{
+-		  memcpy (buf, dot, modifier - dot);
+-		  buf [modifier - dot] = '\0';
+-		  return buf;
+-		}
+-	    }
+-	}
+-
+-      /* Woe32 has a function returning the locale's codepage as a number.  */
+-      sprintf (buf, "CP%u", GetACP ());
+-      codeset = buf;
+-    }
+-#  endif
+-
+-# else
+-
+-  /* On old systems which lack it, use setlocale or getenv.  */
+-  const char *locale = NULL;
+-
+-  /* But most old systems don't have a complete set of locales.  Some
+-     (like SunOS 4 or DJGPP) have only the C locale.  Therefore we don't
+-     use setlocale here; it would return "C" when it doesn't support the
+-     locale name the user has set.  */
+-#  if 0
+-  locale = setlocale (LC_CTYPE, NULL);
+-#  endif
+-  if (locale == NULL || locale[0] == '\0')
+-    {
+-      locale = getenv ("LC_ALL");
+-      if (locale == NULL || locale[0] == '\0')
+-	{
+-	  locale = getenv ("LC_CTYPE");
+-	  if (locale == NULL || locale[0] == '\0')
+-	    locale = getenv ("LANG");
+-	}
+-    }
+-
+-  /* On some old systems, one used to set locale = "iso8859_1". On others,
+-     you set it to "language_COUNTRY.charset". In any case, we resolve it
+-     through the charset.alias file.  */
+-  codeset = locale;
+-
+-# endif
+-
+-#elif defined WIN32_NATIVE
+-
+-  static char buf[2 + 10 + 1];
+-
+-  /* Woe32 has a function returning the locale's codepage as a number.  */
+-  sprintf (buf, "CP%u", GetACP ());
+-  codeset = buf;
+-
+-#elif defined OS2
+-
+-  const char *locale;
+-  static char buf[2 + 10 + 1];
+-  ULONG cp[3];
+-  ULONG cplen;
+-
+-  /* Allow user to override the codeset, as set in the operating system,
+-     with standard language environment variables.  */
+-  locale = getenv ("LC_ALL");
+-  if (locale == NULL || locale[0] == '\0')
+-    {
+-      locale = getenv ("LC_CTYPE");
+-      if (locale == NULL || locale[0] == '\0')
+-	locale = getenv ("LANG");
+-    }
+-  if (locale != NULL && locale[0] != '\0')
+-    {
+-      /* If the locale name contains an encoding after the dot, return it.  */
+-      const char *dot = strchr (locale, '.');
+-
+-      if (dot != NULL)
+-	{
+-	  const char *modifier;
+-
+-	  dot++;
+-	  /* Look for the possible @... trailer and remove it, if any.  */
+-	  modifier = strchr (dot, '@');
+-	  if (modifier == NULL)
+-	    return dot;
+-	  if (modifier - dot < sizeof (buf))
+-	    {
+-	      memcpy (buf, dot, modifier - dot);
+-	      buf [modifier - dot] = '\0';
+-	      return buf;
+-	    }
+-	}
+-
+-      /* Resolve through the charset.alias file.  */
+-      codeset = locale;
+-    }
+-  else
+-    {
+-      /* OS/2 has a function returning the locale's codepage as a number.  */
+-      if (DosQueryCp (sizeof (cp), cp, &cplen))
+-	codeset = "";
+-      else
+-	{
+-	  sprintf (buf, "CP%u", cp[0]);
+-	  codeset = buf;
+-	}
+-    }
+-
+-#endif
+-
+-  if (codeset == NULL)
+-    /* The canonical name cannot be determined.  */
+-    codeset = "";
+-
+-  /* Resolve alias. */
+-  for (aliases = get_charset_aliases ();
+-       *aliases != '\0';
+-       aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
+-    if (strcmp (codeset, aliases) == 0
+-	|| (aliases[0] == '*' && aliases[1] == '\0'))
+-      {
+-	codeset = aliases + strlen (aliases) + 1;
+-	break;
+-      }
+-
+-  /* Don't return an empty string.  GNU libc and GNU libiconv interpret
+-     the empty string as denoting "the locale's character encoding",
+-     thus GNU libiconv would call this function a second time.  */
+-  if (codeset[0] == '\0')
+-    codeset = "ASCII";
+-
+-  return codeset;
+-}
+--- a/intl/localcharset.h
++++ /dev/null
+@@ -1,42 +0,0 @@
+-/* Determine a canonical name for the current locale's character encoding.
+-   Copyright (C) 2000-2003 Free Software Foundation, Inc.
+-   This file is part of the GNU CHARSET Library.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _LOCALCHARSET_H
+-#define _LOCALCHARSET_H
+-
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-
+-/* Determine the current locale's character encoding, and canonicalize it
+-   into one of the canonical names listed in config.charset.
+-   The result must not be freed; it is statically allocated.
+-   If the canonical name cannot be determined, the result is a non-canonical
+-   name.  */
+-extern const char * locale_charset (void);
+-
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-
+-#endif /* _LOCALCHARSET_H */
+--- a/intl/locale.alias
++++ /dev/null
+@@ -1,77 +0,0 @@
+-# Locale name alias data base.
+-# Copyright (C) 1996-2001,2003,2007 Free Software Foundation, Inc.
+-#
+-# This program 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, 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
+-# Library General Public License for more details.
+-#
+-# You should have received a copy of the GNU Library 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.
+-
+-# The format of this file is the same as for the corresponding file of
+-# the X Window System, which normally can be found in
+-#	/usr/lib/X11/locale/locale.alias
+-# A single line contains two fields: an alias and a substitution value.
+-# All entries are case independent.
+-
+-# Note: This file is obsolete and is kept around for the time being for
+-# backward compatibility.  Nobody should rely on the names defined here.
+-# Locales should always be specified by their full name.
+-
+-# Packages using this file: 
+-
+-bokmal		nb_NO.ISO-8859-1
+-bokmål		nb_NO.ISO-8859-1
+-catalan		ca_ES.ISO-8859-1
+-croatian	hr_HR.ISO-8859-2
+-czech		cs_CZ.ISO-8859-2
+-danish          da_DK.ISO-8859-1
+-dansk		da_DK.ISO-8859-1
+-deutsch		de_DE.ISO-8859-1
+-dutch		nl_NL.ISO-8859-1
+-eesti		et_EE.ISO-8859-1
+-estonian	et_EE.ISO-8859-1
+-finnish         fi_FI.ISO-8859-1
+-français	fr_FR.ISO-8859-1
+-french		fr_FR.ISO-8859-1
+-galego		gl_ES.ISO-8859-1
+-galician	gl_ES.ISO-8859-1
+-german		de_DE.ISO-8859-1
+-greek           el_GR.ISO-8859-7
+-hebrew          he_IL.ISO-8859-8
+-hrvatski	hr_HR.ISO-8859-2
+-hungarian       hu_HU.ISO-8859-2
+-icelandic       is_IS.ISO-8859-1
+-italian         it_IT.ISO-8859-1
+-japanese	ja_JP.eucJP
+-japanese.euc	ja_JP.eucJP
+-ja_JP		ja_JP.eucJP
+-ja_JP.ujis	ja_JP.eucJP
+-japanese.sjis	ja_JP.SJIS
+-korean		ko_KR.eucKR
+-korean.euc 	ko_KR.eucKR
+-ko_KR		ko_KR.eucKR
+-lithuanian      lt_LT.ISO-8859-13
+-no_NO		nb_NO.ISO-8859-1
+-no_NO.ISO-8859-1 nb_NO.ISO-8859-1
+-norwegian       nb_NO.ISO-8859-1
+-nynorsk		nn_NO.ISO-8859-1
+-polish          pl_PL.ISO-8859-2
+-portuguese      pt_PT.ISO-8859-1
+-romanian        ro_RO.ISO-8859-2
+-russian         ru_RU.ISO-8859-5
+-slovak          sk_SK.ISO-8859-2
+-slovene         sl_SI.ISO-8859-2
+-slovenian       sl_SI.ISO-8859-2
+-spanish         es_ES.ISO-8859-1
+-swedish         sv_SE.ISO-8859-1
+-thai		th_TH.TIS-620
+-turkish         tr_TR.ISO-8859-9
+--- a/intl/localealias.c
++++ /dev/null
+@@ -1,439 +0,0 @@
+-/* Handle aliases for locale names.
+-   Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
+-   This must come before <config.h> because <config.h> may include
+-   <features.h>, and once <features.h> has been included, it's too late.  */
+-#ifndef _GNU_SOURCE
+-# define _GNU_SOURCE    1
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <ctype.h>
+-#include <stdio.h>
+-#if defined _LIBC || defined HAVE___FSETLOCKING
+-# include <stdio_ext.h>
+-#endif
+-#include <sys/types.h>
+-
+-#ifdef __GNUC__
+-# undef alloca
+-# define alloca __builtin_alloca
+-# define HAVE_ALLOCA 1
+-#else
+-# ifdef _MSC_VER
+-#  include <malloc.h>
+-#  define alloca _alloca
+-# else
+-#  if defined HAVE_ALLOCA_H || defined _LIBC
+-#   include <alloca.h>
+-#  else
+-#   ifdef _AIX
+- #pragma alloca
+-#   else
+-#    ifndef alloca
+-char *alloca ();
+-#    endif
+-#   endif
+-#  endif
+-# endif
+-#endif
+-
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#include "gettextP.h"
+-
+-#if ENABLE_RELOCATABLE
+-# include "relocatable.h"
+-#else
+-# define relocate(pathname) (pathname)
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-#ifdef _LIBC
+-/* Rename the non ANSI C functions.  This is required by the standard
+-   because some ANSI C functions will require linking with this object
+-   file and the name space must not be polluted.  */
+-# define strcasecmp __strcasecmp
+-
+-# ifndef mempcpy
+-#  define mempcpy __mempcpy
+-# endif
+-# define HAVE_MEMPCPY	1
+-# define HAVE___FSETLOCKING	1
+-#endif
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-#else
+-# include "lock.h"
+-#endif
+-
+-#ifndef internal_function
+-# define internal_function
+-#endif
+-
+-/* Some optimizations for glibc.  */
+-#ifdef _LIBC
+-# define FEOF(fp)		feof_unlocked (fp)
+-# define FGETS(buf, n, fp)	fgets_unlocked (buf, n, fp)
+-#else
+-# define FEOF(fp)		feof (fp)
+-# define FGETS(buf, n, fp)	fgets (buf, n, fp)
+-#endif
+-
+-/* For those losing systems which don't have `alloca' we have to add
+-   some additional code emulating it.  */
+-#ifdef HAVE_ALLOCA
+-# define freea(p) /* nothing */
+-#else
+-# define alloca(n) malloc (n)
+-# define freea(p) free (p)
+-#endif
+-
+-#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED
+-# undef fgets
+-# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
+-#endif
+-#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED
+-# undef feof
+-# define feof(s) feof_unlocked (s)
+-#endif
+-
+-
+-__libc_lock_define_initialized (static, lock)
+-
+-
+-struct alias_map
+-{
+-  const char *alias;
+-  const char *value;
+-};
+-
+-
+-#ifndef _LIBC
+-# define libc_freeres_ptr(decl) decl
+-#endif
+-
+-libc_freeres_ptr (static char *string_space);
+-static size_t string_space_act;
+-static size_t string_space_max;
+-libc_freeres_ptr (static struct alias_map *map);
+-static size_t nmap;
+-static size_t maxmap;
+-
+-
+-/* Prototypes for local functions.  */
+-static size_t read_alias_file (const char *fname, int fname_len)
+-     internal_function;
+-static int extend_alias_table (void);
+-static int alias_compare (const struct alias_map *map1,
+-			  const struct alias_map *map2);
+-
+-
+-const char *
+-_nl_expand_alias (const char *name)
+-{
+-  static const char *locale_alias_path;
+-  struct alias_map *retval;
+-  const char *result = NULL;
+-  size_t added;
+-
+-  __libc_lock_lock (lock);
+-
+-  if (locale_alias_path == NULL)
+-    locale_alias_path = LOCALE_ALIAS_PATH;
+-
+-  do
+-    {
+-      struct alias_map item;
+-
+-      item.alias = name;
+-
+-      if (nmap > 0)
+-	retval = (struct alias_map *) bsearch (&item, map, nmap,
+-					       sizeof (struct alias_map),
+-					       (int (*) (const void *,
+-							 const void *)
+-						) alias_compare);
+-      else
+-	retval = NULL;
+-
+-      /* We really found an alias.  Return the value.  */
+-      if (retval != NULL)
+-	{
+-	  result = retval->value;
+-	  break;
+-	}
+-
+-      /* Perhaps we can find another alias file.  */
+-      added = 0;
+-      while (added == 0 && locale_alias_path[0] != '\0')
+-	{
+-	  const char *start;
+-
+-	  while (locale_alias_path[0] == PATH_SEPARATOR)
+-	    ++locale_alias_path;
+-	  start = locale_alias_path;
+-
+-	  while (locale_alias_path[0] != '\0'
+-		 && locale_alias_path[0] != PATH_SEPARATOR)
+-	    ++locale_alias_path;
+-
+-	  if (start < locale_alias_path)
+-	    added = read_alias_file (start, locale_alias_path - start);
+-	}
+-    }
+-  while (added != 0);
+-
+-  __libc_lock_unlock (lock);
+-
+-  return result;
+-}
+-
+-
+-static size_t
+-internal_function
+-read_alias_file (const char *fname, int fname_len)
+-{
+-  FILE *fp;
+-  char *full_fname;
+-  size_t added;
+-  static const char aliasfile[] = "/locale.alias";
+-
+-  full_fname = (char *) alloca (fname_len + sizeof aliasfile);
+-#ifdef HAVE_MEMPCPY
+-  mempcpy (mempcpy (full_fname, fname, fname_len),
+-	   aliasfile, sizeof aliasfile);
+-#else
+-  memcpy (full_fname, fname, fname_len);
+-  memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+-#endif
+-
+-#ifdef _LIBC
+-  /* Note the file is opened with cancellation in the I/O functions
+-     disabled.  */
+-  fp = fopen (relocate (full_fname), "rc");
+-#else
+-  fp = fopen (relocate (full_fname), "r");
+-#endif
+-  freea (full_fname);
+-  if (fp == NULL)
+-    return 0;
+-
+-#ifdef HAVE___FSETLOCKING
+-  /* No threads present.  */
+-  __fsetlocking (fp, FSETLOCKING_BYCALLER);
+-#endif
+-
+-  added = 0;
+-  while (!FEOF (fp))
+-    {
+-      /* It is a reasonable approach to use a fix buffer here because
+-	 a) we are only interested in the first two fields
+-	 b) these fields must be usable as file names and so must not
+-	    be that long
+-	 We avoid a multi-kilobyte buffer here since this would use up
+-	 stack space which we might not have if the program ran out of
+-	 memory.  */
+-      char buf[400];
+-      char *alias;
+-      char *value;
+-      char *cp;
+-      int complete_line;
+-
+-      if (FGETS (buf, sizeof buf, fp) == NULL)
+-	/* EOF reached.  */
+-	break;
+-
+-      /* Determine whether the line is complete.  */
+-      complete_line = strchr (buf, '\n') != NULL;
+-
+-      cp = buf;
+-      /* Ignore leading white space.  */
+-      while (isspace ((unsigned char) cp[0]))
+-	++cp;
+-
+-      /* A leading '#' signals a comment line.  */
+-      if (cp[0] != '\0' && cp[0] != '#')
+-	{
+-	  alias = cp++;
+-	  while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
+-	    ++cp;
+-	  /* Terminate alias name.  */
+-	  if (cp[0] != '\0')
+-	    *cp++ = '\0';
+-
+-	  /* Now look for the beginning of the value.  */
+-	  while (isspace ((unsigned char) cp[0]))
+-	    ++cp;
+-
+-	  if (cp[0] != '\0')
+-	    {
+-	      value = cp++;
+-	      while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
+-		++cp;
+-	      /* Terminate value.  */
+-	      if (cp[0] == '\n')
+-		{
+-		  /* This has to be done to make the following test
+-		     for the end of line possible.  We are looking for
+-		     the terminating '\n' which do not overwrite here.  */
+-		  *cp++ = '\0';
+-		  *cp = '\n';
+-		}
+-	      else if (cp[0] != '\0')
+-		*cp++ = '\0';
+-
+-#ifdef IN_LIBGLOCALE
+-	      /* glibc's locale.alias contains entries for ja_JP and ko_KR
+-		 that make it impossible to use a Japanese or Korean UTF-8
+-		 locale under the name "ja_JP" or "ko_KR".  Ignore these
+-		 entries.  */
+-	      if (strchr (alias, '_') == NULL)
+-#endif
+-		{
+-		  size_t alias_len;
+-		  size_t value_len;
+-
+-		  if (nmap >= maxmap)
+-		    if (__builtin_expect (extend_alias_table (), 0))
+-		      goto out;
+-
+-		  alias_len = strlen (alias) + 1;
+-		  value_len = strlen (value) + 1;
+-
+-		  if (string_space_act + alias_len + value_len > string_space_max)
+-		    {
+-		      /* Increase size of memory pool.  */
+-		      size_t new_size = (string_space_max
+-					 + (alias_len + value_len > 1024
+-					    ? alias_len + value_len : 1024));
+-		      char *new_pool = (char *) realloc (string_space, new_size);
+-		      if (new_pool == NULL)
+-			goto out;
+-
+-		      if (__builtin_expect (string_space != new_pool, 0))
+-			{
+-			  size_t i;
+-
+-			  for (i = 0; i < nmap; i++)
+-			    {
+-			      map[i].alias += new_pool - string_space;
+-			      map[i].value += new_pool - string_space;
+-			    }
+-			}
+-
+-		      string_space = new_pool;
+-		      string_space_max = new_size;
+-		    }
+-
+-		  map[nmap].alias =
+-		    (const char *) memcpy (&string_space[string_space_act],
+-					   alias, alias_len);
+-		  string_space_act += alias_len;
+-
+-		  map[nmap].value =
+-		    (const char *) memcpy (&string_space[string_space_act],
+-					   value, value_len);
+-		  string_space_act += value_len;
+-
+-		  ++nmap;
+-		  ++added;
+-		}
+-	    }
+-	}
+-
+-      /* Possibly not the whole line fits into the buffer.  Ignore
+-	 the rest of the line.  */
+-      if (! complete_line)
+-	do
+-	  if (FGETS (buf, sizeof buf, fp) == NULL)
+-	    /* Make sure the inner loop will be left.  The outer loop
+-	       will exit at the `feof' test.  */
+-	    break;
+-	while (strchr (buf, '\n') == NULL);
+-    }
+-
+- out:
+-  /* Should we test for ferror()?  I think we have to silently ignore
+-     errors.  --drepper  */
+-  fclose (fp);
+-
+-  if (added > 0)
+-    qsort (map, nmap, sizeof (struct alias_map),
+-	   (int (*) (const void *, const void *)) alias_compare);
+-
+-  return added;
+-}
+-
+-
+-static int
+-extend_alias_table ()
+-{
+-  size_t new_size;
+-  struct alias_map *new_map;
+-
+-  new_size = maxmap == 0 ? 100 : 2 * maxmap;
+-  new_map = (struct alias_map *) realloc (map, (new_size
+-						* sizeof (struct alias_map)));
+-  if (new_map == NULL)
+-    /* Simply don't extend: we don't have any more core.  */
+-    return -1;
+-
+-  map = new_map;
+-  maxmap = new_size;
+-  return 0;
+-}
+-
+-
+-static int
+-alias_compare (const struct alias_map *map1, const struct alias_map *map2)
+-{
+-#if defined _LIBC || defined HAVE_STRCASECMP
+-  return strcasecmp (map1->alias, map2->alias);
+-#else
+-  const unsigned char *p1 = (const unsigned char *) map1->alias;
+-  const unsigned char *p2 = (const unsigned char *) map2->alias;
+-  unsigned char c1, c2;
+-
+-  if (p1 == p2)
+-    return 0;
+-
+-  do
+-    {
+-      /* I know this seems to be odd but the tolower() function in
+-	 some systems libc cannot handle nonalpha characters.  */
+-      c1 = isupper (*p1) ? tolower (*p1) : *p1;
+-      c2 = isupper (*p2) ? tolower (*p2) : *p2;
+-      if (c1 == '\0')
+-	break;
+-      ++p1;
+-      ++p2;
+-    }
+-  while (c1 == c2);
+-
+-  return c1 - c2;
+-#endif
+-}
+--- a/intl/localename.c
++++ /dev/null
+@@ -1,1507 +0,0 @@
+-/* Determine name of the currently selected locale.
+-   Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Written by Ulrich Drepper <drepper@gnu.org>, 1995.  */
+-/* Win32 code written by Tor Lillqvist <tml@iki.fi>.  */
+-/* MacOS X code written by Bruno Haible <bruno@clisp.org>.  */
+-
+-#include <config.h>
+-
+-/* Specification.  */
+-#ifdef IN_LIBINTL
+-# include "gettextP.h"
+-#else
+-# include "localename.h"
+-#endif
+-
+-#include <stdlib.h>
+-#include <locale.h>
+-
+-#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+-# include <string.h>
+-# include <CoreFoundation/CFString.h>
+-# if HAVE_CFLOCALECOPYCURRENT
+-#  include <CoreFoundation/CFLocale.h>
+-# elif HAVE_CFPREFERENCESCOPYAPPVALUE
+-#  include <CoreFoundation/CFPreferences.h>
+-# endif
+-#endif
+-
+-#if defined _WIN32 || defined __WIN32__
+-# define WIN32_NATIVE
+-#endif
+-
+-#ifdef WIN32_NATIVE
+-# define WIN32_LEAN_AND_MEAN
+-# include <windows.h>
+-/* List of language codes, sorted by value:
+-   0x01 LANG_ARABIC
+-   0x02 LANG_BULGARIAN
+-   0x03 LANG_CATALAN
+-   0x04 LANG_CHINESE
+-   0x05 LANG_CZECH
+-   0x06 LANG_DANISH
+-   0x07 LANG_GERMAN
+-   0x08 LANG_GREEK
+-   0x09 LANG_ENGLISH
+-   0x0a LANG_SPANISH
+-   0x0b LANG_FINNISH
+-   0x0c LANG_FRENCH
+-   0x0d LANG_HEBREW
+-   0x0e LANG_HUNGARIAN
+-   0x0f LANG_ICELANDIC
+-   0x10 LANG_ITALIAN
+-   0x11 LANG_JAPANESE
+-   0x12 LANG_KOREAN
+-   0x13 LANG_DUTCH
+-   0x14 LANG_NORWEGIAN
+-   0x15 LANG_POLISH
+-   0x16 LANG_PORTUGUESE
+-   0x17 LANG_RHAETO_ROMANCE
+-   0x18 LANG_ROMANIAN
+-   0x19 LANG_RUSSIAN
+-   0x1a LANG_CROATIAN == LANG_SERBIAN
+-   0x1b LANG_SLOVAK
+-   0x1c LANG_ALBANIAN
+-   0x1d LANG_SWEDISH
+-   0x1e LANG_THAI
+-   0x1f LANG_TURKISH
+-   0x20 LANG_URDU
+-   0x21 LANG_INDONESIAN
+-   0x22 LANG_UKRAINIAN
+-   0x23 LANG_BELARUSIAN
+-   0x24 LANG_SLOVENIAN
+-   0x25 LANG_ESTONIAN
+-   0x26 LANG_LATVIAN
+-   0x27 LANG_LITHUANIAN
+-   0x28 LANG_TAJIK
+-   0x29 LANG_FARSI
+-   0x2a LANG_VIETNAMESE
+-   0x2b LANG_ARMENIAN
+-   0x2c LANG_AZERI
+-   0x2d LANG_BASQUE
+-   0x2e LANG_SORBIAN
+-   0x2f LANG_MACEDONIAN
+-   0x30 LANG_SUTU
+-   0x31 LANG_TSONGA
+-   0x32 LANG_TSWANA
+-   0x33 LANG_VENDA
+-   0x34 LANG_XHOSA
+-   0x35 LANG_ZULU
+-   0x36 LANG_AFRIKAANS
+-   0x37 LANG_GEORGIAN
+-   0x38 LANG_FAEROESE
+-   0x39 LANG_HINDI
+-   0x3a LANG_MALTESE
+-   0x3b LANG_SAAMI
+-   0x3c LANG_GAELIC
+-   0x3d LANG_YIDDISH
+-   0x3e LANG_MALAY
+-   0x3f LANG_KAZAK
+-   0x40 LANG_KYRGYZ
+-   0x41 LANG_SWAHILI
+-   0x42 LANG_TURKMEN
+-   0x43 LANG_UZBEK
+-   0x44 LANG_TATAR
+-   0x45 LANG_BENGALI
+-   0x46 LANG_PUNJABI
+-   0x47 LANG_GUJARATI
+-   0x48 LANG_ORIYA
+-   0x49 LANG_TAMIL
+-   0x4a LANG_TELUGU
+-   0x4b LANG_KANNADA
+-   0x4c LANG_MALAYALAM
+-   0x4d LANG_ASSAMESE
+-   0x4e LANG_MARATHI
+-   0x4f LANG_SANSKRIT
+-   0x50 LANG_MONGOLIAN
+-   0x51 LANG_TIBETAN
+-   0x52 LANG_WELSH
+-   0x53 LANG_CAMBODIAN
+-   0x54 LANG_LAO
+-   0x55 LANG_BURMESE
+-   0x56 LANG_GALICIAN
+-   0x57 LANG_KONKANI
+-   0x58 LANG_MANIPURI
+-   0x59 LANG_SINDHI
+-   0x5a LANG_SYRIAC
+-   0x5b LANG_SINHALESE
+-   0x5c LANG_CHEROKEE
+-   0x5d LANG_INUKTITUT
+-   0x5e LANG_AMHARIC
+-   0x5f LANG_TAMAZIGHT
+-   0x60 LANG_KASHMIRI
+-   0x61 LANG_NEPALI
+-   0x62 LANG_FRISIAN
+-   0x63 LANG_PASHTO
+-   0x64 LANG_TAGALOG
+-   0x65 LANG_DIVEHI
+-   0x66 LANG_EDO
+-   0x67 LANG_FULFULDE
+-   0x68 LANG_HAUSA
+-   0x69 LANG_IBIBIO
+-   0x6a LANG_YORUBA
+-   0x70 LANG_IGBO
+-   0x71 LANG_KANURI
+-   0x72 LANG_OROMO
+-   0x73 LANG_TIGRINYA
+-   0x74 LANG_GUARANI
+-   0x75 LANG_HAWAIIAN
+-   0x76 LANG_LATIN
+-   0x77 LANG_SOMALI
+-   0x78 LANG_YI
+-   0x79 LANG_PAPIAMENTU
+-*/
+-/* Mingw headers don't have latest language and sublanguage codes.  */
+-# ifndef LANG_AFRIKAANS
+-# define LANG_AFRIKAANS 0x36
+-# endif
+-# ifndef LANG_ALBANIAN
+-# define LANG_ALBANIAN 0x1c
+-# endif
+-# ifndef LANG_AMHARIC
+-# define LANG_AMHARIC 0x5e
+-# endif
+-# ifndef LANG_ARABIC
+-# define LANG_ARABIC 0x01
+-# endif
+-# ifndef LANG_ARMENIAN
+-# define LANG_ARMENIAN 0x2b
+-# endif
+-# ifndef LANG_ASSAMESE
+-# define LANG_ASSAMESE 0x4d
+-# endif
+-# ifndef LANG_AZERI
+-# define LANG_AZERI 0x2c
+-# endif
+-# ifndef LANG_BASQUE
+-# define LANG_BASQUE 0x2d
+-# endif
+-# ifndef LANG_BELARUSIAN
+-# define LANG_BELARUSIAN 0x23
+-# endif
+-# ifndef LANG_BENGALI
+-# define LANG_BENGALI 0x45
+-# endif
+-# ifndef LANG_BURMESE
+-# define LANG_BURMESE 0x55
+-# endif
+-# ifndef LANG_CAMBODIAN
+-# define LANG_CAMBODIAN 0x53
+-# endif
+-# ifndef LANG_CATALAN
+-# define LANG_CATALAN 0x03
+-# endif
+-# ifndef LANG_CHEROKEE
+-# define LANG_CHEROKEE 0x5c
+-# endif
+-# ifndef LANG_DIVEHI
+-# define LANG_DIVEHI 0x65
+-# endif
+-# ifndef LANG_EDO
+-# define LANG_EDO 0x66
+-# endif
+-# ifndef LANG_ESTONIAN
+-# define LANG_ESTONIAN 0x25
+-# endif
+-# ifndef LANG_FAEROESE
+-# define LANG_FAEROESE 0x38
+-# endif
+-# ifndef LANG_FARSI
+-# define LANG_FARSI 0x29
+-# endif
+-# ifndef LANG_FRISIAN
+-# define LANG_FRISIAN 0x62
+-# endif
+-# ifndef LANG_FULFULDE
+-# define LANG_FULFULDE 0x67
+-# endif
+-# ifndef LANG_GAELIC
+-# define LANG_GAELIC 0x3c
+-# endif
+-# ifndef LANG_GALICIAN
+-# define LANG_GALICIAN 0x56
+-# endif
+-# ifndef LANG_GEORGIAN
+-# define LANG_GEORGIAN 0x37
+-# endif
+-# ifndef LANG_GUARANI
+-# define LANG_GUARANI 0x74
+-# endif
+-# ifndef LANG_GUJARATI
+-# define LANG_GUJARATI 0x47
+-# endif
+-# ifndef LANG_HAUSA
+-# define LANG_HAUSA 0x68
+-# endif
+-# ifndef LANG_HAWAIIAN
+-# define LANG_HAWAIIAN 0x75
+-# endif
+-# ifndef LANG_HEBREW
+-# define LANG_HEBREW 0x0d
+-# endif
+-# ifndef LANG_HINDI
+-# define LANG_HINDI 0x39
+-# endif
+-# ifndef LANG_IBIBIO
+-# define LANG_IBIBIO 0x69
+-# endif
+-# ifndef LANG_IGBO
+-# define LANG_IGBO 0x70
+-# endif
+-# ifndef LANG_INDONESIAN
+-# define LANG_INDONESIAN 0x21
+-# endif
+-# ifndef LANG_INUKTITUT
+-# define LANG_INUKTITUT 0x5d
+-# endif
+-# ifndef LANG_KANNADA
+-# define LANG_KANNADA 0x4b
+-# endif
+-# ifndef LANG_KANURI
+-# define LANG_KANURI 0x71
+-# endif
+-# ifndef LANG_KASHMIRI
+-# define LANG_KASHMIRI 0x60
+-# endif
+-# ifndef LANG_KAZAK
+-# define LANG_KAZAK 0x3f
+-# endif
+-# ifndef LANG_KONKANI
+-# define LANG_KONKANI 0x57
+-# endif
+-# ifndef LANG_KYRGYZ
+-# define LANG_KYRGYZ 0x40
+-# endif
+-# ifndef LANG_LAO
+-# define LANG_LAO 0x54
+-# endif
+-# ifndef LANG_LATIN
+-# define LANG_LATIN 0x76
+-# endif
+-# ifndef LANG_LATVIAN
+-# define LANG_LATVIAN 0x26
+-# endif
+-# ifndef LANG_LITHUANIAN
+-# define LANG_LITHUANIAN 0x27
+-# endif
+-# ifndef LANG_MACEDONIAN
+-# define LANG_MACEDONIAN 0x2f
+-# endif
+-# ifndef LANG_MALAY
+-# define LANG_MALAY 0x3e
+-# endif
+-# ifndef LANG_MALAYALAM
+-# define LANG_MALAYALAM 0x4c
+-# endif
+-# ifndef LANG_MALTESE
+-# define LANG_MALTESE 0x3a
+-# endif
+-# ifndef LANG_MANIPURI
+-# define LANG_MANIPURI 0x58
+-# endif
+-# ifndef LANG_MARATHI
+-# define LANG_MARATHI 0x4e
+-# endif
+-# ifndef LANG_MONGOLIAN
+-# define LANG_MONGOLIAN 0x50
+-# endif
+-# ifndef LANG_NEPALI
+-# define LANG_NEPALI 0x61
+-# endif
+-# ifndef LANG_ORIYA
+-# define LANG_ORIYA 0x48
+-# endif
+-# ifndef LANG_OROMO
+-# define LANG_OROMO 0x72
+-# endif
+-# ifndef LANG_PAPIAMENTU
+-# define LANG_PAPIAMENTU 0x79
+-# endif
+-# ifndef LANG_PASHTO
+-# define LANG_PASHTO 0x63
+-# endif
+-# ifndef LANG_PUNJABI
+-# define LANG_PUNJABI 0x46
+-# endif
+-# ifndef LANG_RHAETO_ROMANCE
+-# define LANG_RHAETO_ROMANCE 0x17
+-# endif
+-# ifndef LANG_SAAMI
+-# define LANG_SAAMI 0x3b
+-# endif
+-# ifndef LANG_SANSKRIT
+-# define LANG_SANSKRIT 0x4f
+-# endif
+-# ifndef LANG_SERBIAN
+-# define LANG_SERBIAN 0x1a
+-# endif
+-# ifndef LANG_SINDHI
+-# define LANG_SINDHI 0x59
+-# endif
+-# ifndef LANG_SINHALESE
+-# define LANG_SINHALESE 0x5b
+-# endif
+-# ifndef LANG_SLOVAK
+-# define LANG_SLOVAK 0x1b
+-# endif
+-# ifndef LANG_SOMALI
+-# define LANG_SOMALI 0x77
+-# endif
+-# ifndef LANG_SORBIAN
+-# define LANG_SORBIAN 0x2e
+-# endif
+-# ifndef LANG_SUTU
+-# define LANG_SUTU 0x30
+-# endif
+-# ifndef LANG_SWAHILI
+-# define LANG_SWAHILI 0x41
+-# endif
+-# ifndef LANG_SYRIAC
+-# define LANG_SYRIAC 0x5a
+-# endif
+-# ifndef LANG_TAGALOG
+-# define LANG_TAGALOG 0x64
+-# endif
+-# ifndef LANG_TAJIK
+-# define LANG_TAJIK 0x28
+-# endif
+-# ifndef LANG_TAMAZIGHT
+-# define LANG_TAMAZIGHT 0x5f
+-# endif
+-# ifndef LANG_TAMIL
+-# define LANG_TAMIL 0x49
+-# endif
+-# ifndef LANG_TATAR
+-# define LANG_TATAR 0x44
+-# endif
+-# ifndef LANG_TELUGU
+-# define LANG_TELUGU 0x4a
+-# endif
+-# ifndef LANG_THAI
+-# define LANG_THAI 0x1e
+-# endif
+-# ifndef LANG_TIBETAN
+-# define LANG_TIBETAN 0x51
+-# endif
+-# ifndef LANG_TIGRINYA
+-# define LANG_TIGRINYA 0x73
+-# endif
+-# ifndef LANG_TSONGA
+-# define LANG_TSONGA 0x31
+-# endif
+-# ifndef LANG_TSWANA
+-# define LANG_TSWANA 0x32
+-# endif
+-# ifndef LANG_TURKMEN
+-# define LANG_TURKMEN 0x42
+-# endif
+-# ifndef LANG_UKRAINIAN
+-# define LANG_UKRAINIAN 0x22
+-# endif
+-# ifndef LANG_URDU
+-# define LANG_URDU 0x20
+-# endif
+-# ifndef LANG_UZBEK
+-# define LANG_UZBEK 0x43
+-# endif
+-# ifndef LANG_VENDA
+-# define LANG_VENDA 0x33
+-# endif
+-# ifndef LANG_VIETNAMESE
+-# define LANG_VIETNAMESE 0x2a
+-# endif
+-# ifndef LANG_WELSH
+-# define LANG_WELSH 0x52
+-# endif
+-# ifndef LANG_XHOSA
+-# define LANG_XHOSA 0x34
+-# endif
+-# ifndef LANG_YI
+-# define LANG_YI 0x78
+-# endif
+-# ifndef LANG_YIDDISH
+-# define LANG_YIDDISH 0x3d
+-# endif
+-# ifndef LANG_YORUBA
+-# define LANG_YORUBA 0x6a
+-# endif
+-# ifndef LANG_ZULU
+-# define LANG_ZULU 0x35
+-# endif
+-# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
+-# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
+-# endif
+-# ifndef SUBLANG_ARABIC_IRAQ
+-# define SUBLANG_ARABIC_IRAQ 0x02
+-# endif
+-# ifndef SUBLANG_ARABIC_EGYPT
+-# define SUBLANG_ARABIC_EGYPT 0x03
+-# endif
+-# ifndef SUBLANG_ARABIC_LIBYA
+-# define SUBLANG_ARABIC_LIBYA 0x04
+-# endif
+-# ifndef SUBLANG_ARABIC_ALGERIA
+-# define SUBLANG_ARABIC_ALGERIA 0x05
+-# endif
+-# ifndef SUBLANG_ARABIC_MOROCCO
+-# define SUBLANG_ARABIC_MOROCCO 0x06
+-# endif
+-# ifndef SUBLANG_ARABIC_TUNISIA
+-# define SUBLANG_ARABIC_TUNISIA 0x07
+-# endif
+-# ifndef SUBLANG_ARABIC_OMAN
+-# define SUBLANG_ARABIC_OMAN 0x08
+-# endif
+-# ifndef SUBLANG_ARABIC_YEMEN
+-# define SUBLANG_ARABIC_YEMEN 0x09
+-# endif
+-# ifndef SUBLANG_ARABIC_SYRIA
+-# define SUBLANG_ARABIC_SYRIA 0x0a
+-# endif
+-# ifndef SUBLANG_ARABIC_JORDAN
+-# define SUBLANG_ARABIC_JORDAN 0x0b
+-# endif
+-# ifndef SUBLANG_ARABIC_LEBANON
+-# define SUBLANG_ARABIC_LEBANON 0x0c
+-# endif
+-# ifndef SUBLANG_ARABIC_KUWAIT
+-# define SUBLANG_ARABIC_KUWAIT 0x0d
+-# endif
+-# ifndef SUBLANG_ARABIC_UAE
+-# define SUBLANG_ARABIC_UAE 0x0e
+-# endif
+-# ifndef SUBLANG_ARABIC_BAHRAIN
+-# define SUBLANG_ARABIC_BAHRAIN 0x0f
+-# endif
+-# ifndef SUBLANG_ARABIC_QATAR
+-# define SUBLANG_ARABIC_QATAR 0x10
+-# endif
+-# ifndef SUBLANG_AZERI_LATIN
+-# define SUBLANG_AZERI_LATIN 0x01
+-# endif
+-# ifndef SUBLANG_AZERI_CYRILLIC
+-# define SUBLANG_AZERI_CYRILLIC 0x02
+-# endif
+-# ifndef SUBLANG_BENGALI_INDIA
+-# define SUBLANG_BENGALI_INDIA 0x01
+-# endif
+-# ifndef SUBLANG_BENGALI_BANGLADESH
+-# define SUBLANG_BENGALI_BANGLADESH 0x02
+-# endif
+-# ifndef SUBLANG_CHINESE_MACAU
+-# define SUBLANG_CHINESE_MACAU 0x05
+-# endif
+-# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
+-# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
+-# endif
+-# ifndef SUBLANG_ENGLISH_JAMAICA
+-# define SUBLANG_ENGLISH_JAMAICA 0x08
+-# endif
+-# ifndef SUBLANG_ENGLISH_CARIBBEAN
+-# define SUBLANG_ENGLISH_CARIBBEAN 0x09
+-# endif
+-# ifndef SUBLANG_ENGLISH_BELIZE
+-# define SUBLANG_ENGLISH_BELIZE 0x0a
+-# endif
+-# ifndef SUBLANG_ENGLISH_TRINIDAD
+-# define SUBLANG_ENGLISH_TRINIDAD 0x0b
+-# endif
+-# ifndef SUBLANG_ENGLISH_ZIMBABWE
+-# define SUBLANG_ENGLISH_ZIMBABWE 0x0c
+-# endif
+-# ifndef SUBLANG_ENGLISH_PHILIPPINES
+-# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+-# endif
+-# ifndef SUBLANG_ENGLISH_INDONESIA
+-# define SUBLANG_ENGLISH_INDONESIA 0x0e
+-# endif
+-# ifndef SUBLANG_ENGLISH_HONGKONG
+-# define SUBLANG_ENGLISH_HONGKONG 0x0f
+-# endif
+-# ifndef SUBLANG_ENGLISH_INDIA
+-# define SUBLANG_ENGLISH_INDIA 0x10
+-# endif
+-# ifndef SUBLANG_ENGLISH_MALAYSIA
+-# define SUBLANG_ENGLISH_MALAYSIA 0x11
+-# endif
+-# ifndef SUBLANG_ENGLISH_SINGAPORE
+-# define SUBLANG_ENGLISH_SINGAPORE 0x12
+-# endif
+-# ifndef SUBLANG_FRENCH_LUXEMBOURG
+-# define SUBLANG_FRENCH_LUXEMBOURG 0x05
+-# endif
+-# ifndef SUBLANG_FRENCH_MONACO
+-# define SUBLANG_FRENCH_MONACO 0x06
+-# endif
+-# ifndef SUBLANG_FRENCH_WESTINDIES
+-# define SUBLANG_FRENCH_WESTINDIES 0x07
+-# endif
+-# ifndef SUBLANG_FRENCH_REUNION
+-# define SUBLANG_FRENCH_REUNION 0x08
+-# endif
+-# ifndef SUBLANG_FRENCH_CONGO
+-# define SUBLANG_FRENCH_CONGO 0x09
+-# endif
+-# ifndef SUBLANG_FRENCH_SENEGAL
+-# define SUBLANG_FRENCH_SENEGAL 0x0a
+-# endif
+-# ifndef SUBLANG_FRENCH_CAMEROON
+-# define SUBLANG_FRENCH_CAMEROON 0x0b
+-# endif
+-# ifndef SUBLANG_FRENCH_COTEDIVOIRE
+-# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
+-# endif
+-# ifndef SUBLANG_FRENCH_MALI
+-# define SUBLANG_FRENCH_MALI 0x0d
+-# endif
+-# ifndef SUBLANG_FRENCH_MOROCCO
+-# define SUBLANG_FRENCH_MOROCCO 0x0e
+-# endif
+-# ifndef SUBLANG_FRENCH_HAITI
+-# define SUBLANG_FRENCH_HAITI 0x0f
+-# endif
+-# ifndef SUBLANG_GERMAN_LUXEMBOURG
+-# define SUBLANG_GERMAN_LUXEMBOURG 0x04
+-# endif
+-# ifndef SUBLANG_GERMAN_LIECHTENSTEIN
+-# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+-# endif
+-# ifndef SUBLANG_KASHMIRI_INDIA
+-# define SUBLANG_KASHMIRI_INDIA 0x02
+-# endif
+-# ifndef SUBLANG_MALAY_MALAYSIA
+-# define SUBLANG_MALAY_MALAYSIA 0x01
+-# endif
+-# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
+-# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+-# endif
+-# ifndef SUBLANG_NEPALI_INDIA
+-# define SUBLANG_NEPALI_INDIA 0x02
+-# endif
+-# ifndef SUBLANG_PUNJABI_INDIA
+-# define SUBLANG_PUNJABI_INDIA 0x01
+-# endif
+-# ifndef SUBLANG_PUNJABI_PAKISTAN
+-# define SUBLANG_PUNJABI_PAKISTAN 0x02
+-# endif
+-# ifndef SUBLANG_ROMANIAN_ROMANIA
+-# define SUBLANG_ROMANIAN_ROMANIA 0x01
+-# endif
+-# ifndef SUBLANG_ROMANIAN_MOLDOVA
+-# define SUBLANG_ROMANIAN_MOLDOVA 0x02
+-# endif
+-# ifndef SUBLANG_SERBIAN_LATIN
+-# define SUBLANG_SERBIAN_LATIN 0x02
+-# endif
+-# ifndef SUBLANG_SERBIAN_CYRILLIC
+-# define SUBLANG_SERBIAN_CYRILLIC 0x03
+-# endif
+-# ifndef SUBLANG_SINDHI_PAKISTAN
+-# define SUBLANG_SINDHI_PAKISTAN 0x01
+-# endif
+-# ifndef SUBLANG_SINDHI_AFGHANISTAN
+-# define SUBLANG_SINDHI_AFGHANISTAN 0x02
+-# endif
+-# ifndef SUBLANG_SPANISH_GUATEMALA
+-# define SUBLANG_SPANISH_GUATEMALA 0x04
+-# endif
+-# ifndef SUBLANG_SPANISH_COSTA_RICA
+-# define SUBLANG_SPANISH_COSTA_RICA 0x05
+-# endif
+-# ifndef SUBLANG_SPANISH_PANAMA
+-# define SUBLANG_SPANISH_PANAMA 0x06
+-# endif
+-# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
+-# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+-# endif
+-# ifndef SUBLANG_SPANISH_VENEZUELA
+-# define SUBLANG_SPANISH_VENEZUELA 0x08
+-# endif
+-# ifndef SUBLANG_SPANISH_COLOMBIA
+-# define SUBLANG_SPANISH_COLOMBIA 0x09
+-# endif
+-# ifndef SUBLANG_SPANISH_PERU
+-# define SUBLANG_SPANISH_PERU 0x0a
+-# endif
+-# ifndef SUBLANG_SPANISH_ARGENTINA
+-# define SUBLANG_SPANISH_ARGENTINA 0x0b
+-# endif
+-# ifndef SUBLANG_SPANISH_ECUADOR
+-# define SUBLANG_SPANISH_ECUADOR 0x0c
+-# endif
+-# ifndef SUBLANG_SPANISH_CHILE
+-# define SUBLANG_SPANISH_CHILE 0x0d
+-# endif
+-# ifndef SUBLANG_SPANISH_URUGUAY
+-# define SUBLANG_SPANISH_URUGUAY 0x0e
+-# endif
+-# ifndef SUBLANG_SPANISH_PARAGUAY
+-# define SUBLANG_SPANISH_PARAGUAY 0x0f
+-# endif
+-# ifndef SUBLANG_SPANISH_BOLIVIA
+-# define SUBLANG_SPANISH_BOLIVIA 0x10
+-# endif
+-# ifndef SUBLANG_SPANISH_EL_SALVADOR
+-# define SUBLANG_SPANISH_EL_SALVADOR 0x11
+-# endif
+-# ifndef SUBLANG_SPANISH_HONDURAS
+-# define SUBLANG_SPANISH_HONDURAS 0x12
+-# endif
+-# ifndef SUBLANG_SPANISH_NICARAGUA
+-# define SUBLANG_SPANISH_NICARAGUA 0x13
+-# endif
+-# ifndef SUBLANG_SPANISH_PUERTO_RICO
+-# define SUBLANG_SPANISH_PUERTO_RICO 0x14
+-# endif
+-# ifndef SUBLANG_SWEDISH_FINLAND
+-# define SUBLANG_SWEDISH_FINLAND 0x02
+-# endif
+-# ifndef SUBLANG_TAMAZIGHT_ARABIC
+-# define SUBLANG_TAMAZIGHT_ARABIC 0x01
+-# endif
+-# ifndef SUBLANG_TAMAZIGHT_ALGERIA_LATIN
+-# define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
+-# endif
+-# ifndef SUBLANG_TIGRINYA_ETHIOPIA
+-# define SUBLANG_TIGRINYA_ETHIOPIA 0x01
+-# endif
+-# ifndef SUBLANG_TIGRINYA_ERITREA
+-# define SUBLANG_TIGRINYA_ERITREA 0x02
+-# endif
+-# ifndef SUBLANG_URDU_PAKISTAN
+-# define SUBLANG_URDU_PAKISTAN 0x01
+-# endif
+-# ifndef SUBLANG_URDU_INDIA
+-# define SUBLANG_URDU_INDIA 0x02
+-# endif
+-# ifndef SUBLANG_UZBEK_LATIN
+-# define SUBLANG_UZBEK_LATIN 0x01
+-# endif
+-# ifndef SUBLANG_UZBEK_CYRILLIC
+-# define SUBLANG_UZBEK_CYRILLIC 0x02
+-# endif
+-#endif
+-
+-# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+-/* MacOS X 10.2 or newer */
+-
+-/* Canonicalize a MacOS X locale name to a Unix locale name.
+-   NAME is a sufficiently large buffer.
+-   On input, it contains the MacOS X locale name.
+-   On output, it contains the Unix locale name.  */
+-#  if !defined IN_LIBINTL
+-static
+-#  endif
+-void
+-gl_locale_name_canonicalize (char *name)
+-{
+-  /* This conversion is based on a posting by
+-     Deborah GoldSmith <goldsmit@apple.com> on 2005-03-08,
+-     http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */
+-
+-  /* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and
+-     ISO 3166) names.  Prior to MacOS X 10.3, there is no API for doing this.
+-     Therefore we do it ourselves, using a table based on the results of the
+-     MacOS X 10.3.8 function
+-     CFLocaleCreateCanonicalLocaleIdentifierFromString().  */
+-  typedef struct { const char legacy[21+1]; const char unixy[5+1]; }
+-	  legacy_entry;
+-  static const legacy_entry legacy_table[] = {
+-    { "Afrikaans",             "af" },
+-    { "Albanian",              "sq" },
+-    { "Amharic",               "am" },
+-    { "Arabic",                "ar" },
+-    { "Armenian",              "hy" },
+-    { "Assamese",              "as" },
+-    { "Aymara",                "ay" },
+-    { "Azerbaijani",           "az" },
+-    { "Basque",                "eu" },
+-    { "Belarusian",            "be" },
+-    { "Belorussian",           "be" },
+-    { "Bengali",               "bn" },
+-    { "Brazilian Portugese",   "pt_BR" },
+-    { "Brazilian Portuguese",  "pt_BR" },
+-    { "Breton",                "br" },
+-    { "Bulgarian",             "bg" },
+-    { "Burmese",               "my" },
+-    { "Byelorussian",          "be" },
+-    { "Catalan",               "ca" },
+-    { "Chewa",                 "ny" },
+-    { "Chichewa",              "ny" },
+-    { "Chinese",               "zh" },
+-    { "Chinese, Simplified",   "zh_CN" },
+-    { "Chinese, Traditional",  "zh_TW" },
+-    { "Chinese, Tradtional",   "zh_TW" },
+-    { "Croatian",              "hr" },
+-    { "Czech",                 "cs" },
+-    { "Danish",                "da" },
+-    { "Dutch",                 "nl" },
+-    { "Dzongkha",              "dz" },
+-    { "English",               "en" },
+-    { "Esperanto",             "eo" },
+-    { "Estonian",              "et" },
+-    { "Faroese",               "fo" },
+-    { "Farsi",                 "fa" },
+-    { "Finnish",               "fi" },
+-    { "Flemish",               "nl_BE" },
+-    { "French",                "fr" },
+-    { "Galician",              "gl" },
+-    { "Gallegan",              "gl" },
+-    { "Georgian",              "ka" },
+-    { "German",                "de" },
+-    { "Greek",                 "el" },
+-    { "Greenlandic",           "kl" },
+-    { "Guarani",               "gn" },
+-    { "Gujarati",              "gu" },
+-    { "Hawaiian",              "haw" }, /* Yes, "haw", not "cpe".  */
+-    { "Hebrew",                "he" },
+-    { "Hindi",                 "hi" },
+-    { "Hungarian",             "hu" },
+-    { "Icelandic",             "is" },
+-    { "Indonesian",            "id" },
+-    { "Inuktitut",             "iu" },
+-    { "Irish",                 "ga" },
+-    { "Italian",               "it" },
+-    { "Japanese",              "ja" },
+-    { "Javanese",              "jv" },
+-    { "Kalaallisut",           "kl" },
+-    { "Kannada",               "kn" },
+-    { "Kashmiri",              "ks" },
+-    { "Kazakh",                "kk" },
+-    { "Khmer",                 "km" },
+-    { "Kinyarwanda",           "rw" },
+-    { "Kirghiz",               "ky" },
+-    { "Korean",                "ko" },
+-    { "Kurdish",               "ku" },
+-    { "Latin",                 "la" },
+-    { "Latvian",               "lv" },
+-    { "Lithuanian",            "lt" },
+-    { "Macedonian",            "mk" },
+-    { "Malagasy",              "mg" },
+-    { "Malay",                 "ms" },
+-    { "Malayalam",             "ml" },
+-    { "Maltese",               "mt" },
+-    { "Manx",                  "gv" },
+-    { "Marathi",               "mr" },
+-    { "Moldavian",             "mo" },
+-    { "Mongolian",             "mn" },
+-    { "Nepali",                "ne" },
+-    { "Norwegian",             "nb" }, /* Yes, "nb", not the obsolete "no".  */
+-    { "Nyanja",                "ny" },
+-    { "Nynorsk",               "nn" },
+-    { "Oriya",                 "or" },
+-    { "Oromo",                 "om" },
+-    { "Panjabi",               "pa" },
+-    { "Pashto",                "ps" },
+-    { "Persian",               "fa" },
+-    { "Polish",                "pl" },
+-    { "Portuguese",            "pt" },
+-    { "Portuguese, Brazilian", "pt_BR" },
+-    { "Punjabi",               "pa" },
+-    { "Pushto",                "ps" },
+-    { "Quechua",               "qu" },
+-    { "Romanian",              "ro" },
+-    { "Ruanda",                "rw" },
+-    { "Rundi",                 "rn" },
+-    { "Russian",               "ru" },
+-    { "Sami",                  "se_NO" }, /* Not just "se".  */
+-    { "Sanskrit",              "sa" },
+-    { "Scottish",              "gd" },
+-    { "Serbian",               "sr" },
+-    { "Simplified Chinese",    "zh_CN" },
+-    { "Sindhi",                "sd" },
+-    { "Sinhalese",             "si" },
+-    { "Slovak",                "sk" },
+-    { "Slovenian",             "sl" },
+-    { "Somali",                "so" },
+-    { "Spanish",               "es" },
+-    { "Sundanese",             "su" },
+-    { "Swahili",               "sw" },
+-    { "Swedish",               "sv" },
+-    { "Tagalog",               "tl" },
+-    { "Tajik",                 "tg" },
+-    { "Tajiki",                "tg" },
+-    { "Tamil",                 "ta" },
+-    { "Tatar",                 "tt" },
+-    { "Telugu",                "te" },
+-    { "Thai",                  "th" },
+-    { "Tibetan",               "bo" },
+-    { "Tigrinya",              "ti" },
+-    { "Tongan",                "to" },
+-    { "Traditional Chinese",   "zh_TW" },
+-    { "Turkish",               "tr" },
+-    { "Turkmen",               "tk" },
+-    { "Uighur",                "ug" },
+-    { "Ukrainian",             "uk" },
+-    { "Urdu",                  "ur" },
+-    { "Uzbek",                 "uz" },
+-    { "Vietnamese",            "vi" },
+-    { "Welsh",                 "cy" },
+-    { "Yiddish",               "yi" }
+-  };
+-
+-  /* Convert new-style locale names with language tags (ISO 639 and ISO 15924)
+-     to Unix (ISO 639 and ISO 3166) names.  */
+-  typedef struct { const char langtag[7+1]; const char unixy[12+1]; }
+-	  langtag_entry;
+-  static const langtag_entry langtag_table[] = {
+-    /* MacOS X has "az-Arab", "az-Cyrl", "az-Latn".
+-       The default script for az on Unix is Latin.  */
+-    { "az-Latn", "az" },
+-    /* MacOS X has "ga-dots".  Does not yet exist on Unix.  */
+-    { "ga-dots", "ga" },
+-    /* MacOS X has "kk-Cyrl".  Does not yet exist on Unix.  */
+-    /* MacOS X has "mn-Cyrl", "mn-Mong".
+-       The default script for mn on Unix is Cyrillic.  */
+-    { "mn-Cyrl", "mn" },
+-    /* MacOS X has "ms-Arab", "ms-Latn".
+-       The default script for ms on Unix is Latin.  */
+-    { "ms-Latn", "ms" },
+-    /* MacOS X has "tg-Cyrl".
+-       The default script for tg on Unix is Cyrillic.  */
+-    { "tg-Cyrl", "tg" },
+-    /* MacOS X has "tk-Cyrl".  Does not yet exist on Unix.  */
+-    /* MacOS X has "tt-Cyrl".
+-       The default script for tt on Unix is Cyrillic.  */
+-    { "tt-Cyrl", "tt" },
+-    /* MacOS X has "zh-Hans", "zh-Hant".
+-       Country codes are used to distinguish these on Unix.  */
+-    { "zh-Hans", "zh_CN" },
+-    { "zh-Hant", "zh_TW" }
+-  };
+-
+-  /* Convert script names (ISO 15924) to Unix conventions.
+-     See http://www.unicode.org/iso15924/iso15924-codes.html  */
+-  typedef struct { const char script[4+1]; const char unixy[9+1]; }
+-	  script_entry;
+-  static const script_entry script_table[] = {
+-    { "Arab", "arabic" },
+-    { "Cyrl", "cyrillic" },
+-    { "Mong", "mongolian" }
+-  };
+-
+-  /* Step 1: Convert using legacy_table.  */
+-  if (name[0] >= 'A' && name[0] <= 'Z')
+-    {
+-      unsigned int i1, i2;
+-      i1 = 0;
+-      i2 = sizeof (legacy_table) / sizeof (legacy_entry);
+-      while (i2 - i1 > 1)
+-	{
+-	  /* At this point we know that if name occurs in legacy_table,
+-	     its index must be >= i1 and < i2.  */
+-	  unsigned int i = (i1 + i2) >> 1;
+-	  const legacy_entry *p = &legacy_table[i];
+-	  if (strcmp (name, p->legacy) < 0)
+-	    i2 = i;
+-	  else
+-	    i1 = i;
+-	}
+-      if (strcmp (name, legacy_table[i1].legacy) == 0)
+-	{
+-	  strcpy (name, legacy_table[i1].unixy);
+-	  return;
+-	}
+-    }
+-
+-  /* Step 2: Convert using langtag_table and script_table.  */
+-  if (strlen (name) == 7 && name[2] == '-')
+-    {
+-      unsigned int i1, i2;
+-      i1 = 0;
+-      i2 = sizeof (langtag_table) / sizeof (langtag_entry);
+-      while (i2 - i1 > 1)
+-	{
+-	  /* At this point we know that if name occurs in langtag_table,
+-	     its index must be >= i1 and < i2.  */
+-	  unsigned int i = (i1 + i2) >> 1;
+-	  const langtag_entry *p = &langtag_table[i];
+-	  if (strcmp (name, p->langtag) < 0)
+-	    i2 = i;
+-	  else
+-	    i1 = i;
+-	}
+-      if (strcmp (name, langtag_table[i1].langtag) == 0)
+-	{
+-	  strcpy (name, langtag_table[i1].unixy);
+-	  return;
+-	}
+-
+-      i1 = 0;
+-      i2 = sizeof (script_table) / sizeof (script_entry);
+-      while (i2 - i1 > 1)
+-	{
+-	  /* At this point we know that if (name + 3) occurs in script_table,
+-	     its index must be >= i1 and < i2.  */
+-	  unsigned int i = (i1 + i2) >> 1;
+-	  const script_entry *p = &script_table[i];
+-	  if (strcmp (name + 3, p->script) < 0)
+-	    i2 = i;
+-	  else
+-	    i1 = i;
+-	}
+-      if (strcmp (name + 3, script_table[i1].script) == 0)
+-	{
+-	  name[2] = '@';
+-	  strcpy (name + 3, script_table[i1].unixy);
+-	  return;
+-	}
+-    }
+-
+-  /* Step 3: Convert new-style dash to Unix underscore. */
+-  {
+-    char *p;
+-    for (p = name; *p != '\0'; p++)
+-      if (*p == '-')
+-	*p = '_';
+-  }
+-}
+-
+-#endif
+-
+-/* XPG3 defines the result of 'setlocale (category, NULL)' as:
+-   "Directs 'setlocale()' to query 'category' and return the current
+-    setting of 'local'."
+-   However it does not specify the exact format.  Neither do SUSV2 and
+-   ISO C 99.  So we can use this feature only on selected systems (e.g.
+-   those using GNU C Library).  */
+-#if defined _LIBC || (defined __GLIBC__ && __GLIBC__ >= 2)
+-# define HAVE_LOCALE_NULL
+-#endif
+-
+-/* Determine the current locale's name, and canonicalize it into XPG syntax
+-     language[_territory][.codeset][@modifier]
+-   The codeset part in the result is not reliable; the locale_charset()
+-   should be used for codeset information instead.
+-   The result must not be freed; it is statically allocated.  */
+-
+-const char *
+-gl_locale_name_posix (int category, const char *categoryname)
+-{
+-  /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
+-     On some systems this can be done by the 'setlocale' function itself.  */
+-#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+-  return setlocale (category, NULL);
+-#else
+-  const char *retval;
+-
+-  /* Setting of LC_ALL overrides all other.  */
+-  retval = getenv ("LC_ALL");
+-  if (retval != NULL && retval[0] != '\0')
+-    return retval;
+-  /* Next comes the name of the desired category.  */
+-  retval = getenv (categoryname);
+-  if (retval != NULL && retval[0] != '\0')
+-    return retval;
+-  /* Last possibility is the LANG environment variable.  */
+-  retval = getenv ("LANG");
+-  if (retval != NULL && retval[0] != '\0')
+-    return retval;
+-
+-  return NULL;
+-#endif
+-}
+-
+-const char *
+-gl_locale_name_default (void)
+-{
+-  /* POSIX:2001 says:
+-     "All implementations shall define a locale as the default locale, to be
+-      invoked when no environment variables are set, or set to the empty
+-      string.  This default locale can be the POSIX locale or any other
+-      implementation-defined locale.  Some implementations may provide
+-      facilities for local installation administrators to set the default
+-      locale, customizing it for each location.  POSIX:2001 does not require
+-      such a facility.  */
+-
+-#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined(WIN32_NATIVE))
+-
+-  /* The system does not have a way of setting the locale, other than the
+-     POSIX specified environment variables.  We use C as default locale.  */
+-  return "C";
+-
+-#else
+-
+-  /* Return an XPG style locale name language[_territory][@modifier].
+-     Don't even bother determining the codeset; it's not useful in this
+-     context, because message catalogs are not specific to a single
+-     codeset.  */
+-
+-# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+-  /* MacOS X 10.2 or newer */
+-  {
+-    /* Cache the locale name, since CoreFoundation calls are expensive.  */
+-    static const char *cached_localename;
+-
+-    if (cached_localename == NULL)
+-      {
+-	char namebuf[256];
+-#  if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */
+-	CFLocaleRef locale = CFLocaleCopyCurrent ();
+-	CFStringRef name = CFLocaleGetIdentifier (locale);
+-
+-	if (CFStringGetCString (name, namebuf, sizeof(namebuf),
+-				kCFStringEncodingASCII))
+-	  {
+-	    gl_locale_name_canonicalize (namebuf);
+-	    cached_localename = strdup (namebuf);
+-	  }
+-	CFRelease (locale);
+-#  elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */
+-	CFTypeRef value =
+-	  CFPreferencesCopyAppValue (CFSTR ("AppleLocale"),
+-				     kCFPreferencesCurrentApplication);
+-	if (value != NULL
+-	    && CFGetTypeID (value) == CFStringGetTypeID ()
+-	    && CFStringGetCString ((CFStringRef)value, namebuf, sizeof(namebuf),
+-				   kCFStringEncodingASCII))
+-	  {
+-	    gl_locale_name_canonicalize (namebuf);
+-	    cached_localename = strdup (namebuf);
+-	  }
+-#  endif
+-	if (cached_localename == NULL)
+-	  cached_localename = "C";
+-      }
+-    return cached_localename;
+-  }
+-
+-# endif
+-
+-# if defined(WIN32_NATIVE) /* WIN32, not Cygwin */
+-  {
+-    LCID lcid;
+-    LANGID langid;
+-    int primary, sub;
+-
+-    /* Use native Win32 API locale ID.  */
+-    lcid = GetThreadLocale ();
+-
+-    /* Strip off the sorting rules, keep only the language part.  */
+-    langid = LANGIDFROMLCID (lcid);
+-
+-    /* Split into language and territory part.  */
+-    primary = PRIMARYLANGID (langid);
+-    sub = SUBLANGID (langid);
+-
+-    /* Dispatch on language.
+-       See also http://www.unicode.org/unicode/onlinedat/languages.html .
+-       For details about languages, see http://www.ethnologue.com/ .  */
+-    switch (primary)
+-      {
+-      case LANG_AFRIKAANS: return "af_ZA";
+-      case LANG_ALBANIAN: return "sq_AL";
+-      case LANG_AMHARIC: return "am_ET";
+-      case LANG_ARABIC:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
+-	  case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
+-	  case SUBLANG_ARABIC_EGYPT: return "ar_EG";
+-	  case SUBLANG_ARABIC_LIBYA: return "ar_LY";
+-	  case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
+-	  case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
+-	  case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
+-	  case SUBLANG_ARABIC_OMAN: return "ar_OM";
+-	  case SUBLANG_ARABIC_YEMEN: return "ar_YE";
+-	  case SUBLANG_ARABIC_SYRIA: return "ar_SY";
+-	  case SUBLANG_ARABIC_JORDAN: return "ar_JO";
+-	  case SUBLANG_ARABIC_LEBANON: return "ar_LB";
+-	  case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
+-	  case SUBLANG_ARABIC_UAE: return "ar_AE";
+-	  case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
+-	  case SUBLANG_ARABIC_QATAR: return "ar_QA";
+-	  }
+-	return "ar";
+-      case LANG_ARMENIAN: return "hy_AM";
+-      case LANG_ASSAMESE: return "as_IN";
+-      case LANG_AZERI:
+-	switch (sub)
+-	  {
+-	  /* FIXME: Adjust this when Azerbaijani locales appear on Unix.  */
+-	  case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
+-	  case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
+-	  }
+-	return "az";
+-      case LANG_BASQUE:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "eu_ES";
+-	  }
+-	return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR".  */
+-      case LANG_BELARUSIAN: return "be_BY";
+-      case LANG_BENGALI:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_BENGALI_INDIA: return "bn_IN";
+-	  case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
+-	  }
+-	return "bn";
+-      case LANG_BULGARIAN: return "bg_BG";
+-      case LANG_BURMESE: return "my_MM";
+-      case LANG_CAMBODIAN: return "km_KH";
+-      case LANG_CATALAN: return "ca_ES";
+-      case LANG_CHEROKEE: return "chr_US";
+-      case LANG_CHINESE:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
+-	  case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
+-	  case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
+-	  case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
+-	  case SUBLANG_CHINESE_MACAU: return "zh_MO";
+-	  }
+-	return "zh";
+-      case LANG_CROATIAN:       /* LANG_CROATIAN == LANG_SERBIAN
+-				 * What used to be called Serbo-Croatian
+-				 * should really now be two separate
+-				 * languages because of political reasons.
+-				 * (Says tml, who knows nothing about Serbian
+-				 * or Croatian.)
+-				 * (I can feel those flames coming already.)
+-				 */
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "hr_HR";
+-	  case SUBLANG_SERBIAN_LATIN: return "sr_CS";
+-	  case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
+-	  }
+-	return "hr";
+-      case LANG_CZECH: return "cs_CZ";
+-      case LANG_DANISH: return "da_DK";
+-      case LANG_DIVEHI: return "dv_MV";
+-      case LANG_DUTCH:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DUTCH: return "nl_NL";
+-	  case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
+-	  }
+-	return "nl";
+-      case LANG_EDO: return "bin_NG";
+-      case LANG_ENGLISH:
+-	switch (sub)
+-	  {
+-	  /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
+-	   * English was the language spoken in England.
+-	   * Oh well.
+-	   */
+-	  case SUBLANG_ENGLISH_US: return "en_US";
+-	  case SUBLANG_ENGLISH_UK: return "en_GB";
+-	  case SUBLANG_ENGLISH_AUS: return "en_AU";
+-	  case SUBLANG_ENGLISH_CAN: return "en_CA";
+-	  case SUBLANG_ENGLISH_NZ: return "en_NZ";
+-	  case SUBLANG_ENGLISH_EIRE: return "en_IE";
+-	  case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
+-	  case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
+-	  case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
+-	  case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
+-	  case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
+-	  case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
+-	  case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
+-	  case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
+-	  case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
+-	  case SUBLANG_ENGLISH_INDIA: return "en_IN";
+-	  case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
+-	  case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
+-	  }
+-	return "en";
+-      case LANG_ESTONIAN: return "et_EE";
+-      case LANG_FAEROESE: return "fo_FO";
+-      case LANG_FARSI: return "fa_IR";
+-      case LANG_FINNISH: return "fi_FI";
+-      case LANG_FRENCH:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_FRENCH: return "fr_FR";
+-	  case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
+-	  case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
+-	  case SUBLANG_FRENCH_SWISS: return "fr_CH";
+-	  case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
+-	  case SUBLANG_FRENCH_MONACO: return "fr_MC";
+-	  case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
+-	  case SUBLANG_FRENCH_REUNION: return "fr_RE";
+-	  case SUBLANG_FRENCH_CONGO: return "fr_CG";
+-	  case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
+-	  case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
+-	  case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
+-	  case SUBLANG_FRENCH_MALI: return "fr_ML";
+-	  case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
+-	  case SUBLANG_FRENCH_HAITI: return "fr_HT";
+-	  }
+-	return "fr";
+-      case LANG_FRISIAN: return "fy_NL";
+-      case LANG_FULFULDE:
+-	/* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin.  */
+-	return "ff_NG";
+-      case LANG_GAELIC:
+-	switch (sub)
+-	  {
+-	  case 0x01: /* SCOTTISH */ return "gd_GB";
+-	  case 0x02: /* IRISH */ return "ga_IE";
+-	  }
+-	return "C";
+-      case LANG_GALICIAN: return "gl_ES";
+-      case LANG_GEORGIAN: return "ka_GE";
+-      case LANG_GERMAN:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_GERMAN: return "de_DE";
+-	  case SUBLANG_GERMAN_SWISS: return "de_CH";
+-	  case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
+-	  case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
+-	  case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
+-	  }
+-	return "de";
+-      case LANG_GREEK: return "el_GR";
+-      case LANG_GUARANI: return "gn_PY";
+-      case LANG_GUJARATI: return "gu_IN";
+-      case LANG_HAUSA: return "ha_NG";
+-      case LANG_HAWAIIAN:
+-	/* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
+-	   or Hawaii Creole English ("cpe_US", 600000 speakers)?  */
+-	return "cpe_US";
+-      case LANG_HEBREW: return "he_IL";
+-      case LANG_HINDI: return "hi_IN";
+-      case LANG_HUNGARIAN: return "hu_HU";
+-      case LANG_IBIBIO: return "nic_NG";
+-      case LANG_ICELANDIC: return "is_IS";
+-      case LANG_IGBO: return "ig_NG";
+-      case LANG_INDONESIAN: return "id_ID";
+-      case LANG_INUKTITUT: return "iu_CA";
+-      case LANG_ITALIAN:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_ITALIAN: return "it_IT";
+-	  case SUBLANG_ITALIAN_SWISS: return "it_CH";
+-	  }
+-	return "it";
+-      case LANG_JAPANESE: return "ja_JP";
+-      case LANG_KANNADA: return "kn_IN";
+-      case LANG_KANURI: return "kr_NG";
+-      case LANG_KASHMIRI:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "ks_PK";
+-	  case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
+-	  }
+-	return "ks";
+-      case LANG_KAZAK: return "kk_KZ";
+-      case LANG_KONKANI:
+-	/* FIXME: Adjust this when such locales appear on Unix.  */
+-	return "kok_IN";
+-      case LANG_KOREAN: return "ko_KR";
+-      case LANG_KYRGYZ: return "ky_KG";
+-      case LANG_LAO: return "lo_LA";
+-      case LANG_LATIN: return "la_VA";
+-      case LANG_LATVIAN: return "lv_LV";
+-      case LANG_LITHUANIAN: return "lt_LT";
+-      case LANG_MACEDONIAN: return "mk_MK";
+-      case LANG_MALAY:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
+-	  case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
+-	  }
+-	return "ms";
+-      case LANG_MALAYALAM: return "ml_IN";
+-      case LANG_MALTESE: return "mt_MT";
+-      case LANG_MANIPURI:
+-	/* FIXME: Adjust this when such locales appear on Unix.  */
+-	return "mni_IN";
+-      case LANG_MARATHI: return "mr_IN";
+-      case LANG_MONGOLIAN:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "mn_MN";
+-	  }
+-	return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN".  */
+-      case LANG_NEPALI:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "ne_NP";
+-	  case SUBLANG_NEPALI_INDIA: return "ne_IN";
+-	  }
+-	return "ne";
+-      case LANG_NORWEGIAN:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_NORWEGIAN_BOKMAL: return "nb_NO";
+-	  case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
+-	  }
+-	return "no";
+-      case LANG_ORIYA: return "or_IN";
+-      case LANG_OROMO: return "om_ET";
+-      case LANG_PAPIAMENTU: return "pap_AN";
+-      case LANG_PASHTO:
+-	return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF".  */
+-      case LANG_POLISH: return "pl_PL";
+-      case LANG_PORTUGUESE:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_PORTUGUESE: return "pt_PT";
+-	  /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
+-	     Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
+-	  case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
+-	  }
+-	return "pt";
+-      case LANG_PUNJABI:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
+-	  case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
+-	  }
+-	return "pa";
+-      case LANG_RHAETO_ROMANCE: return "rm_CH";
+-      case LANG_ROMANIAN:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
+-	  case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
+-	  }
+-	return "ro";
+-      case LANG_RUSSIAN:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "ru_RU";
+-	  }
+-	return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD".  */
+-      case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
+-      case LANG_SANSKRIT: return "sa_IN";
+-      case LANG_SINDHI:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
+-	  case SUBLANG_SINDHI_AFGHANISTAN: return "sd_AF";
+-	  }
+-	return "sd";
+-      case LANG_SINHALESE: return "si_LK";
+-      case LANG_SLOVAK: return "sk_SK";
+-      case LANG_SLOVENIAN: return "sl_SI";
+-      case LANG_SOMALI: return "so_SO";
+-      case LANG_SORBIAN:
+-	/* FIXME: Adjust this when such locales appear on Unix.  */
+-	return "wen_DE";
+-      case LANG_SPANISH:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_SPANISH: return "es_ES";
+-	  case SUBLANG_SPANISH_MEXICAN: return "es_MX";
+-	  case SUBLANG_SPANISH_MODERN:
+-	    return "es_ES@modern";	/* not seen on Unix */
+-	  case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
+-	  case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
+-	  case SUBLANG_SPANISH_PANAMA: return "es_PA";
+-	  case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
+-	  case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
+-	  case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
+-	  case SUBLANG_SPANISH_PERU: return "es_PE";
+-	  case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
+-	  case SUBLANG_SPANISH_ECUADOR: return "es_EC";
+-	  case SUBLANG_SPANISH_CHILE: return "es_CL";
+-	  case SUBLANG_SPANISH_URUGUAY: return "es_UY";
+-	  case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
+-	  case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
+-	  case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
+-	  case SUBLANG_SPANISH_HONDURAS: return "es_HN";
+-	  case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
+-	  case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
+-	  }
+-	return "es";
+-      case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
+-      case LANG_SWAHILI: return "sw_KE";
+-      case LANG_SWEDISH:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "sv_SE";
+-	  case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
+-	  }
+-	return "sv";
+-      case LANG_SYRIAC: return "syr_TR"; /* An extinct language.  */
+-      case LANG_TAGALOG: return "tl_PH";
+-      case LANG_TAJIK: return "tg_TJ";
+-      case LANG_TAMAZIGHT:
+-	switch (sub)
+-	  {
+-	  /* FIXME: Adjust this when Tamazight locales appear on Unix.  */
+-	  case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
+-	  case SUBLANG_TAMAZIGHT_ALGERIA_LATIN: return "ber_DZ@latin";
+-	  }
+-	return "ber_MA";
+-      case LANG_TAMIL:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_DEFAULT: return "ta_IN";
+-	  }
+-	return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG".  */
+-      case LANG_TATAR: return "tt_RU";
+-      case LANG_TELUGU: return "te_IN";
+-      case LANG_THAI: return "th_TH";
+-      case LANG_TIBETAN: return "bo_CN";
+-      case LANG_TIGRINYA:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
+-	  case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
+-	  }
+-	return "ti";
+-      case LANG_TSONGA: return "ts_ZA";
+-      case LANG_TSWANA: return "tn_BW";
+-      case LANG_TURKISH: return "tr_TR";
+-      case LANG_TURKMEN: return "tk_TM";
+-      case LANG_UKRAINIAN: return "uk_UA";
+-      case LANG_URDU:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_URDU_PAKISTAN: return "ur_PK";
+-	  case SUBLANG_URDU_INDIA: return "ur_IN";
+-	  }
+-	return "ur";
+-      case LANG_UZBEK:
+-	switch (sub)
+-	  {
+-	  case SUBLANG_UZBEK_LATIN: return "uz_UZ";
+-	  case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
+-	  }
+-	return "uz";
+-      case LANG_VENDA: return "ve_ZA";
+-      case LANG_VIETNAMESE: return "vi_VN";
+-      case LANG_WELSH: return "cy_GB";
+-      case LANG_XHOSA: return "xh_ZA";
+-      case LANG_YI: return "sit_CN";
+-      case LANG_YIDDISH: return "yi_IL";
+-      case LANG_YORUBA: return "yo_NG";
+-      case LANG_ZULU: return "zu_ZA";
+-      default: return "C";
+-      }
+-  }
+-# endif
+-#endif
+-}
+-
+-const char *
+-gl_locale_name (int category, const char *categoryname)
+-{
+-  const char *retval;
+-
+-  retval = gl_locale_name_posix (category, categoryname);
+-  if (retval != NULL)
+-    return retval;
+-
+-  return gl_locale_name_default ();
+-}
+--- a/intl/lock.c
++++ /dev/null
+@@ -1,922 +0,0 @@
+-/* Locking in multithreaded situations.
+-   Copyright (C) 2005-2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Written by Bruno Haible <bruno@clisp.org>, 2005.
+-   Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
+-   gthr-win32.h.  */
+-
+-#include <config.h>
+-
+-#include "lock.h"
+-
+-/* ========================================================================= */
+-
+-#if USE_POSIX_THREADS
+-
+-/* Use the POSIX threads library.  */
+-
+-# if PTHREAD_IN_USE_DETECTION_HARD
+-
+-/* The function to be executed by a dummy thread.  */
+-static void *
+-dummy_thread_func (void *arg)
+-{
+-  return arg;
+-}
+-
+-int
+-glthread_in_use (void)
+-{
+-  static int tested;
+-  static int result; /* 1: linked with -lpthread, 0: only with libc */
+-
+-  if (!tested)
+-    {
+-      pthread_t thread;
+-
+-      if (pthread_create (&thread, NULL, dummy_thread_func, NULL) != 0)
+-	/* Thread creation failed.  */
+-	result = 0;
+-      else
+-	{
+-	  /* Thread creation works.  */
+-	  void *retval;
+-	  if (pthread_join (thread, &retval) != 0)
+-	    abort ();
+-	  result = 1;
+-	}
+-      tested = 1;
+-    }
+-  return result;
+-}
+-
+-# endif
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-# if HAVE_PTHREAD_RWLOCK
+-
+-#  if !defined PTHREAD_RWLOCK_INITIALIZER
+-
+-void
+-glthread_rwlock_init (gl_rwlock_t *lock)
+-{
+-  if (pthread_rwlock_init (&lock->rwlock, NULL) != 0)
+-    abort ();
+-  lock->initialized = 1;
+-}
+-
+-void
+-glthread_rwlock_rdlock (gl_rwlock_t *lock)
+-{
+-  if (!lock->initialized)
+-    {
+-      if (pthread_mutex_lock (&lock->guard) != 0)
+-	abort ();
+-      if (!lock->initialized)
+-	glthread_rwlock_init (lock);
+-      if (pthread_mutex_unlock (&lock->guard) != 0)
+-	abort ();
+-    }
+-  if (pthread_rwlock_rdlock (&lock->rwlock) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_rwlock_wrlock (gl_rwlock_t *lock)
+-{
+-  if (!lock->initialized)
+-    {
+-      if (pthread_mutex_lock (&lock->guard) != 0)
+-	abort ();
+-      if (!lock->initialized)
+-	glthread_rwlock_init (lock);
+-      if (pthread_mutex_unlock (&lock->guard) != 0)
+-	abort ();
+-    }
+-  if (pthread_rwlock_wrlock (&lock->rwlock) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_rwlock_unlock (gl_rwlock_t *lock)
+-{
+-  if (!lock->initialized)
+-    abort ();
+-  if (pthread_rwlock_unlock (&lock->rwlock) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_rwlock_destroy (gl_rwlock_t *lock)
+-{
+-  if (!lock->initialized)
+-    abort ();
+-  if (pthread_rwlock_destroy (&lock->rwlock) != 0)
+-    abort ();
+-  lock->initialized = 0;
+-}
+-
+-#  endif
+-
+-# else
+-
+-void
+-glthread_rwlock_init (gl_rwlock_t *lock)
+-{
+-  if (pthread_mutex_init (&lock->lock, NULL) != 0)
+-    abort ();
+-  if (pthread_cond_init (&lock->waiting_readers, NULL) != 0)
+-    abort ();
+-  if (pthread_cond_init (&lock->waiting_writers, NULL) != 0)
+-    abort ();
+-  lock->waiting_writers_count = 0;
+-  lock->runcount = 0;
+-}
+-
+-void
+-glthread_rwlock_rdlock (gl_rwlock_t *lock)
+-{
+-  if (pthread_mutex_lock (&lock->lock) != 0)
+-    abort ();
+-  /* Test whether only readers are currently running, and whether the runcount
+-     field will not overflow.  */
+-  /* POSIX says: "It is implementation-defined whether the calling thread
+-     acquires the lock when a writer does not hold the lock and there are
+-     writers blocked on the lock."  Let's say, no: give the writers a higher
+-     priority.  */
+-  while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0))
+-    {
+-      /* This thread has to wait for a while.  Enqueue it among the
+-	 waiting_readers.  */
+-      if (pthread_cond_wait (&lock->waiting_readers, &lock->lock) != 0)
+-	abort ();
+-    }
+-  lock->runcount++;
+-  if (pthread_mutex_unlock (&lock->lock) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_rwlock_wrlock (gl_rwlock_t *lock)
+-{
+-  if (pthread_mutex_lock (&lock->lock) != 0)
+-    abort ();
+-  /* Test whether no readers or writers are currently running.  */
+-  while (!(lock->runcount == 0))
+-    {
+-      /* This thread has to wait for a while.  Enqueue it among the
+-	 waiting_writers.  */
+-      lock->waiting_writers_count++;
+-      if (pthread_cond_wait (&lock->waiting_writers, &lock->lock) != 0)
+-	abort ();
+-      lock->waiting_writers_count--;
+-    }
+-  lock->runcount--; /* runcount becomes -1 */
+-  if (pthread_mutex_unlock (&lock->lock) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_rwlock_unlock (gl_rwlock_t *lock)
+-{
+-  if (pthread_mutex_lock (&lock->lock) != 0)
+-    abort ();
+-  if (lock->runcount < 0)
+-    {
+-      /* Drop a writer lock.  */
+-      if (!(lock->runcount == -1))
+-	abort ();
+-      lock->runcount = 0;
+-    }
+-  else
+-    {
+-      /* Drop a reader lock.  */
+-      if (!(lock->runcount > 0))
+-	abort ();
+-      lock->runcount--;
+-    }
+-  if (lock->runcount == 0)
+-    {
+-      /* POSIX recommends that "write locks shall take precedence over read
+-	 locks", to avoid "writer starvation".  */
+-      if (lock->waiting_writers_count > 0)
+-	{
+-	  /* Wake up one of the waiting writers.  */
+-	  if (pthread_cond_signal (&lock->waiting_writers) != 0)
+-	    abort ();
+-	}
+-      else
+-	{
+-	  /* Wake up all waiting readers.  */
+-	  if (pthread_cond_broadcast (&lock->waiting_readers) != 0)
+-	    abort ();
+-	}
+-    }
+-  if (pthread_mutex_unlock (&lock->lock) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_rwlock_destroy (gl_rwlock_t *lock)
+-{
+-  if (pthread_mutex_destroy (&lock->lock) != 0)
+-    abort ();
+-  if (pthread_cond_destroy (&lock->waiting_readers) != 0)
+-    abort ();
+-  if (pthread_cond_destroy (&lock->waiting_writers) != 0)
+-    abort ();
+-}
+-
+-# endif
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-# if HAVE_PTHREAD_MUTEX_RECURSIVE
+-
+-#  if !(defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
+-
+-void
+-glthread_recursive_lock_init (gl_recursive_lock_t *lock)
+-{
+-  pthread_mutexattr_t attributes;
+-
+-  if (pthread_mutexattr_init (&attributes) != 0)
+-    abort ();
+-  if (pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE) != 0)
+-    abort ();
+-  if (pthread_mutex_init (&lock->recmutex, &attributes) != 0)
+-    abort ();
+-  if (pthread_mutexattr_destroy (&attributes) != 0)
+-    abort ();
+-  lock->initialized = 1;
+-}
+-
+-void
+-glthread_recursive_lock_lock (gl_recursive_lock_t *lock)
+-{
+-  if (!lock->initialized)
+-    {
+-      if (pthread_mutex_lock (&lock->guard) != 0)
+-	abort ();
+-      if (!lock->initialized)
+-	glthread_recursive_lock_init (lock);
+-      if (pthread_mutex_unlock (&lock->guard) != 0)
+-	abort ();
+-    }
+-  if (pthread_mutex_lock (&lock->recmutex) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_recursive_lock_unlock (gl_recursive_lock_t *lock)
+-{
+-  if (!lock->initialized)
+-    abort ();
+-  if (pthread_mutex_unlock (&lock->recmutex) != 0)
+-    abort ();
+-}
+-
+-void
+-glthread_recursive_lock_destroy (gl_recursive_lock_t *lock)
+-{
+-  if (!lock->initialized)
+-    abort ();
+-  if (pthread_mutex_destroy (&lock->recmutex) != 0)
+-    abort ();
+-  lock->initialized = 0;
+-}
+-
+-#  endif
+-
+-# else
+-
+-void
+-glthread_recursive_lock_init (gl_recursive_lock_t *lock)
+-{
+-  if (pthread_mutex_init (&lock->mutex, NULL) != 0)
+-    abort ();
+-  lock->owner = (pthread_t) 0;
+-  lock->depth = 0;
+-}
+-
+-void
+-glthread_recursive_lock_lock (gl_recursive_lock_t *lock)
+-{
+-  pthread_t self = pthread_self ();
+-  if (lock->owner != self)
+-    {
+-      if (pthread_mutex_lock (&lock->mutex) != 0)
+-	abort ();
+-      lock->owner = self;
+-    }
+-  if (++(lock->depth) == 0) /* wraparound? */
+-    abort ();
+-}
+-
+-void
+-glthread_recursive_lock_unlock (gl_recursive_lock_t *lock)
+-{
+-  if (lock->owner != pthread_self ())
+-    abort ();
+-  if (lock->depth == 0)
+-    abort ();
+-  if (--(lock->depth) == 0)
+-    {
+-      lock->owner = (pthread_t) 0;
+-      if (pthread_mutex_unlock (&lock->mutex) != 0)
+-	abort ();
+-    }
+-}
+-
+-void
+-glthread_recursive_lock_destroy (gl_recursive_lock_t *lock)
+-{
+-  if (lock->owner != (pthread_t) 0)
+-    abort ();
+-  if (pthread_mutex_destroy (&lock->mutex) != 0)
+-    abort ();
+-}
+-
+-# endif
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-static const pthread_once_t fresh_once = PTHREAD_ONCE_INIT;
+-
+-int
+-glthread_once_singlethreaded (pthread_once_t *once_control)
+-{
+-  /* We don't know whether pthread_once_t is an integer type, a floating-point
+-     type, a pointer type, or a structure type.  */
+-  char *firstbyte = (char *)once_control;
+-  if (*firstbyte == *(const char *)&fresh_once)
+-    {
+-      /* First time use of once_control.  Invert the first byte.  */
+-      *firstbyte = ~ *(const char *)&fresh_once;
+-      return 1;
+-    }
+-  else
+-    return 0;
+-}
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if USE_PTH_THREADS
+-
+-/* Use the GNU Pth threads library.  */
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-void
+-glthread_once_call (void *arg)
+-{
+-  void (**gl_once_temp_addr) (void) = (void (**) (void)) arg;
+-  void (*initfunction) (void) = *gl_once_temp_addr;
+-  initfunction ();
+-}
+-
+-int
+-glthread_once_singlethreaded (pth_once_t *once_control)
+-{
+-  /* We know that pth_once_t is an integer type.  */
+-  if (*once_control == PTH_ONCE_INIT)
+-    {
+-      /* First time use of once_control.  Invert the marker.  */
+-      *once_control = ~ PTH_ONCE_INIT;
+-      return 1;
+-    }
+-  else
+-    return 0;
+-}
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if USE_SOLARIS_THREADS
+-
+-/* Use the old Solaris threads library.  */
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-void
+-glthread_recursive_lock_init (gl_recursive_lock_t *lock)
+-{
+-  if (mutex_init (&lock->mutex, USYNC_THREAD, NULL) != 0)
+-    abort ();
+-  lock->owner = (thread_t) 0;
+-  lock->depth = 0;
+-}
+-
+-void
+-glthread_recursive_lock_lock (gl_recursive_lock_t *lock)
+-{
+-  thread_t self = thr_self ();
+-  if (lock->owner != self)
+-    {
+-      if (mutex_lock (&lock->mutex) != 0)
+-	abort ();
+-      lock->owner = self;
+-    }
+-  if (++(lock->depth) == 0) /* wraparound? */
+-    abort ();
+-}
+-
+-void
+-glthread_recursive_lock_unlock (gl_recursive_lock_t *lock)
+-{
+-  if (lock->owner != thr_self ())
+-    abort ();
+-  if (lock->depth == 0)
+-    abort ();
+-  if (--(lock->depth) == 0)
+-    {
+-      lock->owner = (thread_t) 0;
+-      if (mutex_unlock (&lock->mutex) != 0)
+-	abort ();
+-    }
+-}
+-
+-void
+-glthread_recursive_lock_destroy (gl_recursive_lock_t *lock)
+-{
+-  if (lock->owner != (thread_t) 0)
+-    abort ();
+-  if (mutex_destroy (&lock->mutex) != 0)
+-    abort ();
+-}
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-void
+-glthread_once (gl_once_t *once_control, void (*initfunction) (void))
+-{
+-  if (!once_control->inited)
+-    {
+-      /* Use the mutex to guarantee that if another thread is already calling
+-	 the initfunction, this thread waits until it's finished.  */
+-      if (mutex_lock (&once_control->mutex) != 0)
+-	abort ();
+-      if (!once_control->inited)
+-	{
+-	  once_control->inited = 1;
+-	  initfunction ();
+-	}
+-      if (mutex_unlock (&once_control->mutex) != 0)
+-	abort ();
+-    }
+-}
+-
+-int
+-glthread_once_singlethreaded (gl_once_t *once_control)
+-{
+-  /* We know that gl_once_t contains an integer type.  */
+-  if (!once_control->inited)
+-    {
+-      /* First time use of once_control.  Invert the marker.  */
+-      once_control->inited = ~ 0;
+-      return 1;
+-    }
+-  else
+-    return 0;
+-}
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if USE_WIN32_THREADS
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-void
+-glthread_lock_init (gl_lock_t *lock)
+-{
+-  InitializeCriticalSection (&lock->lock);
+-  lock->guard.done = 1;
+-}
+-
+-void
+-glthread_lock_lock (gl_lock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    {
+-      if (InterlockedIncrement (&lock->guard.started) == 0)
+-	/* This thread is the first one to need this lock.  Initialize it.  */
+-	glthread_lock_init (lock);
+-      else
+-	/* Yield the CPU while waiting for another thread to finish
+-	   initializing this lock.  */
+-	while (!lock->guard.done)
+-	  Sleep (0);
+-    }
+-  EnterCriticalSection (&lock->lock);
+-}
+-
+-void
+-glthread_lock_unlock (gl_lock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    abort ();
+-  LeaveCriticalSection (&lock->lock);
+-}
+-
+-void
+-glthread_lock_destroy (gl_lock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    abort ();
+-  DeleteCriticalSection (&lock->lock);
+-  lock->guard.done = 0;
+-}
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-static inline void
+-gl_waitqueue_init (gl_waitqueue_t *wq)
+-{
+-  wq->array = NULL;
+-  wq->count = 0;
+-  wq->alloc = 0;
+-  wq->offset = 0;
+-}
+-
+-/* Enqueues the current thread, represented by an event, in a wait queue.
+-   Returns INVALID_HANDLE_VALUE if an allocation failure occurs.  */
+-static HANDLE
+-gl_waitqueue_add (gl_waitqueue_t *wq)
+-{
+-  HANDLE event;
+-  unsigned int index;
+-
+-  if (wq->count == wq->alloc)
+-    {
+-      unsigned int new_alloc = 2 * wq->alloc + 1;
+-      HANDLE *new_array =
+-	(HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE));
+-      if (new_array == NULL)
+-	/* No more memory.  */
+-	return INVALID_HANDLE_VALUE;
+-      /* Now is a good opportunity to rotate the array so that its contents
+-	 starts at offset 0.  */
+-      if (wq->offset > 0)
+-	{
+-	  unsigned int old_count = wq->count;
+-	  unsigned int old_alloc = wq->alloc;
+-	  unsigned int old_offset = wq->offset;
+-	  unsigned int i;
+-	  if (old_offset + old_count > old_alloc)
+-	    {
+-	      unsigned int limit = old_offset + old_count - old_alloc;
+-	      for (i = 0; i < limit; i++)
+-		new_array[old_alloc + i] = new_array[i];
+-	    }
+-	  for (i = 0; i < old_count; i++)
+-	    new_array[i] = new_array[old_offset + i];
+-	  wq->offset = 0;
+-	}
+-      wq->array = new_array;
+-      wq->alloc = new_alloc;
+-    }
+-  event = CreateEvent (NULL, TRUE, FALSE, NULL);
+-  if (event == INVALID_HANDLE_VALUE)
+-    /* No way to allocate an event.  */
+-    return INVALID_HANDLE_VALUE;
+-  index = wq->offset + wq->count;
+-  if (index >= wq->alloc)
+-    index -= wq->alloc;
+-  wq->array[index] = event;
+-  wq->count++;
+-  return event;
+-}
+-
+-/* Notifies the first thread from a wait queue and dequeues it.  */
+-static inline void
+-gl_waitqueue_notify_first (gl_waitqueue_t *wq)
+-{
+-  SetEvent (wq->array[wq->offset + 0]);
+-  wq->offset++;
+-  wq->count--;
+-  if (wq->count == 0 || wq->offset == wq->alloc)
+-    wq->offset = 0;
+-}
+-
+-/* Notifies all threads from a wait queue and dequeues them all.  */
+-static inline void
+-gl_waitqueue_notify_all (gl_waitqueue_t *wq)
+-{
+-  unsigned int i;
+-
+-  for (i = 0; i < wq->count; i++)
+-    {
+-      unsigned int index = wq->offset + i;
+-      if (index >= wq->alloc)
+-	index -= wq->alloc;
+-      SetEvent (wq->array[index]);
+-    }
+-  wq->count = 0;
+-  wq->offset = 0;
+-}
+-
+-void
+-glthread_rwlock_init (gl_rwlock_t *lock)
+-{
+-  InitializeCriticalSection (&lock->lock);
+-  gl_waitqueue_init (&lock->waiting_readers);
+-  gl_waitqueue_init (&lock->waiting_writers);
+-  lock->runcount = 0;
+-  lock->guard.done = 1;
+-}
+-
+-void
+-glthread_rwlock_rdlock (gl_rwlock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    {
+-      if (InterlockedIncrement (&lock->guard.started) == 0)
+-	/* This thread is the first one to need this lock.  Initialize it.  */
+-	glthread_rwlock_init (lock);
+-      else
+-	/* Yield the CPU while waiting for another thread to finish
+-	   initializing this lock.  */
+-	while (!lock->guard.done)
+-	  Sleep (0);
+-    }
+-  EnterCriticalSection (&lock->lock);
+-  /* Test whether only readers are currently running, and whether the runcount
+-     field will not overflow.  */
+-  if (!(lock->runcount + 1 > 0))
+-    {
+-      /* This thread has to wait for a while.  Enqueue it among the
+-	 waiting_readers.  */
+-      HANDLE event = gl_waitqueue_add (&lock->waiting_readers);
+-      if (event != INVALID_HANDLE_VALUE)
+-	{
+-	  DWORD result;
+-	  LeaveCriticalSection (&lock->lock);
+-	  /* Wait until another thread signals this event.  */
+-	  result = WaitForSingleObject (event, INFINITE);
+-	  if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
+-	    abort ();
+-	  CloseHandle (event);
+-	  /* The thread which signalled the event already did the bookkeeping:
+-	     removed us from the waiting_readers, incremented lock->runcount.  */
+-	  if (!(lock->runcount > 0))
+-	    abort ();
+-	  return;
+-	}
+-      else
+-	{
+-	  /* Allocation failure.  Weird.  */
+-	  do
+-	    {
+-	      LeaveCriticalSection (&lock->lock);
+-	      Sleep (1);
+-	      EnterCriticalSection (&lock->lock);
+-	    }
+-	  while (!(lock->runcount + 1 > 0));
+-	}
+-    }
+-  lock->runcount++;
+-  LeaveCriticalSection (&lock->lock);
+-}
+-
+-void
+-glthread_rwlock_wrlock (gl_rwlock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    {
+-      if (InterlockedIncrement (&lock->guard.started) == 0)
+-	/* This thread is the first one to need this lock.  Initialize it.  */
+-	glthread_rwlock_init (lock);
+-      else
+-	/* Yield the CPU while waiting for another thread to finish
+-	   initializing this lock.  */
+-	while (!lock->guard.done)
+-	  Sleep (0);
+-    }
+-  EnterCriticalSection (&lock->lock);
+-  /* Test whether no readers or writers are currently running.  */
+-  if (!(lock->runcount == 0))
+-    {
+-      /* This thread has to wait for a while.  Enqueue it among the
+-	 waiting_writers.  */
+-      HANDLE event = gl_waitqueue_add (&lock->waiting_writers);
+-      if (event != INVALID_HANDLE_VALUE)
+-	{
+-	  DWORD result;
+-	  LeaveCriticalSection (&lock->lock);
+-	  /* Wait until another thread signals this event.  */
+-	  result = WaitForSingleObject (event, INFINITE);
+-	  if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
+-	    abort ();
+-	  CloseHandle (event);
+-	  /* The thread which signalled the event already did the bookkeeping:
+-	     removed us from the waiting_writers, set lock->runcount = -1.  */
+-	  if (!(lock->runcount == -1))
+-	    abort ();
+-	  return;
+-	}
+-      else
+-	{
+-	  /* Allocation failure.  Weird.  */
+-	  do
+-	    {
+-	      LeaveCriticalSection (&lock->lock);
+-	      Sleep (1);
+-	      EnterCriticalSection (&lock->lock);
+-	    }
+-	  while (!(lock->runcount == 0));
+-	}
+-    }
+-  lock->runcount--; /* runcount becomes -1 */
+-  LeaveCriticalSection (&lock->lock);
+-}
+-
+-void
+-glthread_rwlock_unlock (gl_rwlock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    abort ();
+-  EnterCriticalSection (&lock->lock);
+-  if (lock->runcount < 0)
+-    {
+-      /* Drop a writer lock.  */
+-      if (!(lock->runcount == -1))
+-	abort ();
+-      lock->runcount = 0;
+-    }
+-  else
+-    {
+-      /* Drop a reader lock.  */
+-      if (!(lock->runcount > 0))
+-	abort ();
+-      lock->runcount--;
+-    }
+-  if (lock->runcount == 0)
+-    {
+-      /* POSIX recommends that "write locks shall take precedence over read
+-	 locks", to avoid "writer starvation".  */
+-      if (lock->waiting_writers.count > 0)
+-	{
+-	  /* Wake up one of the waiting writers.  */
+-	  lock->runcount--;
+-	  gl_waitqueue_notify_first (&lock->waiting_writers);
+-	}
+-      else
+-	{
+-	  /* Wake up all waiting readers.  */
+-	  lock->runcount += lock->waiting_readers.count;
+-	  gl_waitqueue_notify_all (&lock->waiting_readers);
+-	}
+-    }
+-  LeaveCriticalSection (&lock->lock);
+-}
+-
+-void
+-glthread_rwlock_destroy (gl_rwlock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    abort ();
+-  if (lock->runcount != 0)
+-    abort ();
+-  DeleteCriticalSection (&lock->lock);
+-  if (lock->waiting_readers.array != NULL)
+-    free (lock->waiting_readers.array);
+-  if (lock->waiting_writers.array != NULL)
+-    free (lock->waiting_writers.array);
+-  lock->guard.done = 0;
+-}
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-void
+-glthread_recursive_lock_init (gl_recursive_lock_t *lock)
+-{
+-  lock->owner = 0;
+-  lock->depth = 0;
+-  InitializeCriticalSection (&lock->lock);
+-  lock->guard.done = 1;
+-}
+-
+-void
+-glthread_recursive_lock_lock (gl_recursive_lock_t *lock)
+-{
+-  if (!lock->guard.done)
+-    {
+-      if (InterlockedIncrement (&lock->guard.started) == 0)
+-	/* This thread is the first one to need this lock.  Initialize it.  */
+-	glthread_recursive_lock_init (lock);
+-      else
+-	/* Yield the CPU while waiting for another thread to finish
+-	   initializing this lock.  */
+-	while (!lock->guard.done)
+-	  Sleep (0);
+-    }
+-  {
+-    DWORD self = GetCurrentThreadId ();
+-    if (lock->owner != self)
+-      {
+-	EnterCriticalSection (&lock->lock);
+-	lock->owner = self;
+-      }
+-    if (++(lock->depth) == 0) /* wraparound? */
+-      abort ();
+-  }
+-}
+-
+-void
+-glthread_recursive_lock_unlock (gl_recursive_lock_t *lock)
+-{
+-  if (lock->owner != GetCurrentThreadId ())
+-    abort ();
+-  if (lock->depth == 0)
+-    abort ();
+-  if (--(lock->depth) == 0)
+-    {
+-      lock->owner = 0;
+-      LeaveCriticalSection (&lock->lock);
+-    }
+-}
+-
+-void
+-glthread_recursive_lock_destroy (gl_recursive_lock_t *lock)
+-{
+-  if (lock->owner != 0)
+-    abort ();
+-  DeleteCriticalSection (&lock->lock);
+-  lock->guard.done = 0;
+-}
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-void
+-glthread_once (gl_once_t *once_control, void (*initfunction) (void))
+-{
+-  if (once_control->inited <= 0)
+-    {
+-      if (InterlockedIncrement (&once_control->started) == 0)
+-	{
+-	  /* This thread is the first one to come to this once_control.  */
+-	  InitializeCriticalSection (&once_control->lock);
+-	  EnterCriticalSection (&once_control->lock);
+-	  once_control->inited = 0;
+-	  initfunction ();
+-	  once_control->inited = 1;
+-	  LeaveCriticalSection (&once_control->lock);
+-	}
+-      else
+-	{
+-	  /* Undo last operation.  */
+-	  InterlockedDecrement (&once_control->started);
+-	  /* Some other thread has already started the initialization.
+-	     Yield the CPU while waiting for the other thread to finish
+-	     initializing and taking the lock.  */
+-	  while (once_control->inited < 0)
+-	    Sleep (0);
+-	  if (once_control->inited <= 0)
+-	    {
+-	      /* Take the lock.  This blocks until the other thread has
+-		 finished calling the initfunction.  */
+-	      EnterCriticalSection (&once_control->lock);
+-	      LeaveCriticalSection (&once_control->lock);
+-	      if (!(once_control->inited > 0))
+-		abort ();
+-	    }
+-	}
+-    }
+-}
+-
+-#endif
+-
+-/* ========================================================================= */
+--- a/intl/lock.h
++++ /dev/null
+@@ -1,1105 +0,0 @@
+-/* Locking in multithreaded situations.
+-   Copyright (C) 2005-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Written by Bruno Haible <bruno@clisp.org>, 2005.
+-   Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
+-   gthr-win32.h.  */
+-
+-/* This file contains locking primitives for use with a given thread library.
+-   It does not contain primitives for creating threads or for other
+-   synchronization primitives.
+-
+-   Normal (non-recursive) locks:
+-     Type:                gl_lock_t
+-     Declaration:         gl_lock_define(extern, name)
+-     Initializer:         gl_lock_define_initialized(, name)
+-     Initialization:      gl_lock_init (name);
+-     Taking the lock:     gl_lock_lock (name);
+-     Releasing the lock:  gl_lock_unlock (name);
+-     De-initialization:   gl_lock_destroy (name);
+-
+-   Read-Write (non-recursive) locks:
+-     Type:                gl_rwlock_t
+-     Declaration:         gl_rwlock_define(extern, name)
+-     Initializer:         gl_rwlock_define_initialized(, name)
+-     Initialization:      gl_rwlock_init (name);
+-     Taking the lock:     gl_rwlock_rdlock (name);
+-                          gl_rwlock_wrlock (name);
+-     Releasing the lock:  gl_rwlock_unlock (name);
+-     De-initialization:   gl_rwlock_destroy (name);
+-
+-   Recursive locks:
+-     Type:                gl_recursive_lock_t
+-     Declaration:         gl_recursive_lock_define(extern, name)
+-     Initializer:         gl_recursive_lock_define_initialized(, name)
+-     Initialization:      gl_recursive_lock_init (name);
+-     Taking the lock:     gl_recursive_lock_lock (name);
+-     Releasing the lock:  gl_recursive_lock_unlock (name);
+-     De-initialization:   gl_recursive_lock_destroy (name);
+-
+-  Once-only execution:
+-     Type:                gl_once_t
+-     Initializer:         gl_once_define(extern, name)
+-     Execution:           gl_once (name, initfunction);
+-*/
+-
+-
+-#ifndef _LOCK_H
+-#define _LOCK_H
+-
+-/* ========================================================================= */
+-
+-#if USE_POSIX_THREADS
+-
+-/* Use the POSIX threads library.  */
+-
+-# include <pthread.h>
+-# include <stdlib.h>
+-
+-# ifdef __cplusplus
+-extern "C" {
+-# endif
+-
+-# if PTHREAD_IN_USE_DETECTION_HARD
+-
+-/* The pthread_in_use() detection needs to be done at runtime.  */
+-#  define pthread_in_use() \
+-     glthread_in_use ()
+-extern int glthread_in_use (void);
+-
+-# endif
+-
+-# if USE_POSIX_THREADS_WEAK
+-
+-/* Use weak references to the POSIX threads library.  */
+-
+-/* Weak references avoid dragging in external libraries if the other parts
+-   of the program don't use them.  Here we use them, because we don't want
+-   every program that uses libintl to depend on libpthread.  This assumes
+-   that libpthread would not be loaded after libintl; i.e. if libintl is
+-   loaded first, by an executable that does not depend on libpthread, and
+-   then a module is dynamically loaded that depends on libpthread, libintl
+-   will not be multithread-safe.  */
+-
+-/* The way to test at runtime whether libpthread is present is to test
+-   whether a function pointer's value, such as &pthread_mutex_init, is
+-   non-NULL.  However, some versions of GCC have a bug through which, in
+-   PIC mode, &foo != NULL always evaluates to true if there is a direct
+-   call to foo(...) in the same function.  To avoid this, we test the
+-   address of a function in libpthread that we don't use.  */
+-
+-#  pragma weak pthread_mutex_init
+-#  pragma weak pthread_mutex_lock
+-#  pragma weak pthread_mutex_unlock
+-#  pragma weak pthread_mutex_destroy
+-#  pragma weak pthread_rwlock_init
+-#  pragma weak pthread_rwlock_rdlock
+-#  pragma weak pthread_rwlock_wrlock
+-#  pragma weak pthread_rwlock_unlock
+-#  pragma weak pthread_rwlock_destroy
+-#  pragma weak pthread_once
+-#  pragma weak pthread_cond_init
+-#  pragma weak pthread_cond_wait
+-#  pragma weak pthread_cond_signal
+-#  pragma weak pthread_cond_broadcast
+-#  pragma weak pthread_cond_destroy
+-#  pragma weak pthread_mutexattr_init
+-#  pragma weak pthread_mutexattr_settype
+-#  pragma weak pthread_mutexattr_destroy
+-#  ifndef pthread_self
+-#   pragma weak pthread_self
+-#  endif
+-
+-#  if !PTHREAD_IN_USE_DETECTION_HARD
+-#   pragma weak pthread_cancel
+-#   define pthread_in_use() (pthread_cancel != NULL)
+-#  endif
+-
+-# else
+-
+-#  if !PTHREAD_IN_USE_DETECTION_HARD
+-#   define pthread_in_use() 1
+-#  endif
+-
+-# endif
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-typedef pthread_mutex_t gl_lock_t;
+-# define gl_lock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS pthread_mutex_t NAME;
+-# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS pthread_mutex_t NAME = gl_lock_initializer;
+-# define gl_lock_initializer \
+-    PTHREAD_MUTEX_INITIALIZER
+-# define gl_lock_init(NAME) \
+-    do                                                                  \
+-      {                                                                 \
+-        if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) \
+-          abort ();                                                     \
+-      }                                                                 \
+-    while (0)
+-# define gl_lock_lock(NAME) \
+-    do                                                            \
+-      {                                                           \
+-        if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) \
+-          abort ();                                               \
+-      }                                                           \
+-    while (0)
+-# define gl_lock_unlock(NAME) \
+-    do                                                              \
+-      {                                                             \
+-        if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) \
+-          abort ();                                                 \
+-      }                                                             \
+-    while (0)
+-# define gl_lock_destroy(NAME) \
+-    do                                                               \
+-      {                                                              \
+-        if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) \
+-          abort ();                                                  \
+-      }                                                              \
+-    while (0)
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-# if HAVE_PTHREAD_RWLOCK
+-
+-#  ifdef PTHREAD_RWLOCK_INITIALIZER
+-
+-typedef pthread_rwlock_t gl_rwlock_t;
+-#   define gl_rwlock_define(STORAGECLASS, NAME) \
+-      STORAGECLASS pthread_rwlock_t NAME;
+-#   define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+-      STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer;
+-#   define gl_rwlock_initializer \
+-      PTHREAD_RWLOCK_INITIALIZER
+-#   define gl_rwlock_init(NAME) \
+-      do                                                                   \
+-        {                                                                  \
+-          if (pthread_in_use () && pthread_rwlock_init (&NAME, NULL) != 0) \
+-            abort ();                                                      \
+-        }                                                                  \
+-      while (0)
+-#   define gl_rwlock_rdlock(NAME) \
+-      do                                                               \
+-        {                                                              \
+-          if (pthread_in_use () && pthread_rwlock_rdlock (&NAME) != 0) \
+-            abort ();                                                  \
+-        }                                                              \
+-      while (0)
+-#   define gl_rwlock_wrlock(NAME) \
+-      do                                                               \
+-        {                                                              \
+-          if (pthread_in_use () && pthread_rwlock_wrlock (&NAME) != 0) \
+-            abort ();                                                  \
+-        }                                                              \
+-      while (0)
+-#   define gl_rwlock_unlock(NAME) \
+-      do                                                               \
+-        {                                                              \
+-          if (pthread_in_use () && pthread_rwlock_unlock (&NAME) != 0) \
+-            abort ();                                                  \
+-        }                                                              \
+-      while (0)
+-#   define gl_rwlock_destroy(NAME) \
+-      do                                                                \
+-        {                                                               \
+-          if (pthread_in_use () && pthread_rwlock_destroy (&NAME) != 0) \
+-            abort ();                                                   \
+-        }                                                               \
+-      while (0)
+-
+-#  else
+-
+-typedef struct
+-        {
+-          int initialized;
+-          pthread_mutex_t guard;   /* protects the initialization */
+-          pthread_rwlock_t rwlock; /* read-write lock */
+-        }
+-        gl_rwlock_t;
+-#   define gl_rwlock_define(STORAGECLASS, NAME) \
+-      STORAGECLASS gl_rwlock_t NAME;
+-#   define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+-      STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
+-#   define gl_rwlock_initializer \
+-      { 0, PTHREAD_MUTEX_INITIALIZER }
+-#   define gl_rwlock_init(NAME) \
+-      do                                  \
+-        {                                 \
+-          if (pthread_in_use ())          \
+-            glthread_rwlock_init (&NAME); \
+-        }                                 \
+-      while (0)
+-#   define gl_rwlock_rdlock(NAME) \
+-      do                                    \
+-        {                                   \
+-          if (pthread_in_use ())            \
+-            glthread_rwlock_rdlock (&NAME); \
+-        }                                   \
+-      while (0)
+-#   define gl_rwlock_wrlock(NAME) \
+-      do                                    \
+-        {                                   \
+-          if (pthread_in_use ())            \
+-            glthread_rwlock_wrlock (&NAME); \
+-        }                                   \
+-      while (0)
+-#   define gl_rwlock_unlock(NAME) \
+-      do                                    \
+-        {                                   \
+-          if (pthread_in_use ())            \
+-            glthread_rwlock_unlock (&NAME); \
+-        }                                   \
+-      while (0)
+-#   define gl_rwlock_destroy(NAME) \
+-      do                                     \
+-        {                                    \
+-          if (pthread_in_use ())             \
+-            glthread_rwlock_destroy (&NAME); \
+-        }                                    \
+-      while (0)
+-extern void glthread_rwlock_init (gl_rwlock_t *lock);
+-extern void glthread_rwlock_rdlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_wrlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_unlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_destroy (gl_rwlock_t *lock);
+-
+-#  endif
+-
+-# else
+-
+-typedef struct
+-        {
+-          pthread_mutex_t lock; /* protects the remaining fields */
+-          pthread_cond_t waiting_readers; /* waiting readers */
+-          pthread_cond_t waiting_writers; /* waiting writers */
+-          unsigned int waiting_writers_count; /* number of waiting writers */
+-          int runcount; /* number of readers running, or -1 when a writer runs */
+-        }
+-        gl_rwlock_t;
+-# define gl_rwlock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_rwlock_t NAME;
+-# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
+-# define gl_rwlock_initializer \
+-    { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 }
+-# define gl_rwlock_init(NAME) \
+-    do                                  \
+-      {                                 \
+-        if (pthread_in_use ())          \
+-          glthread_rwlock_init (&NAME); \
+-      }                                 \
+-    while (0)
+-# define gl_rwlock_rdlock(NAME) \
+-    do                                    \
+-      {                                   \
+-        if (pthread_in_use ())            \
+-          glthread_rwlock_rdlock (&NAME); \
+-      }                                   \
+-    while (0)
+-# define gl_rwlock_wrlock(NAME) \
+-    do                                    \
+-      {                                   \
+-        if (pthread_in_use ())            \
+-          glthread_rwlock_wrlock (&NAME); \
+-      }                                   \
+-    while (0)
+-# define gl_rwlock_unlock(NAME) \
+-    do                                    \
+-      {                                   \
+-        if (pthread_in_use ())            \
+-          glthread_rwlock_unlock (&NAME); \
+-      }                                   \
+-    while (0)
+-# define gl_rwlock_destroy(NAME) \
+-    do                                     \
+-      {                                    \
+-        if (pthread_in_use ())             \
+-          glthread_rwlock_destroy (&NAME); \
+-      }                                    \
+-    while (0)
+-extern void glthread_rwlock_init (gl_rwlock_t *lock);
+-extern void glthread_rwlock_rdlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_wrlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_unlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_destroy (gl_rwlock_t *lock);
+-
+-# endif
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-# if HAVE_PTHREAD_MUTEX_RECURSIVE
+-
+-#  if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+-
+-typedef pthread_mutex_t gl_recursive_lock_t;
+-#   define gl_recursive_lock_define(STORAGECLASS, NAME) \
+-      STORAGECLASS pthread_mutex_t NAME;
+-#   define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+-      STORAGECLASS pthread_mutex_t NAME = gl_recursive_lock_initializer;
+-#   ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+-#    define gl_recursive_lock_initializer \
+-       PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+-#   else
+-#    define gl_recursive_lock_initializer \
+-       PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+-#   endif
+-#   define gl_recursive_lock_init(NAME) \
+-      do                                                                  \
+-        {                                                                 \
+-          if (pthread_in_use () && pthread_mutex_init (&NAME, NULL) != 0) \
+-            abort ();                                                     \
+-        }                                                                 \
+-      while (0)
+-#   define gl_recursive_lock_lock(NAME) \
+-      do                                                            \
+-        {                                                           \
+-          if (pthread_in_use () && pthread_mutex_lock (&NAME) != 0) \
+-            abort ();                                               \
+-        }                                                           \
+-      while (0)
+-#   define gl_recursive_lock_unlock(NAME) \
+-      do                                                              \
+-        {                                                             \
+-          if (pthread_in_use () && pthread_mutex_unlock (&NAME) != 0) \
+-            abort ();                                                 \
+-        }                                                             \
+-      while (0)
+-#   define gl_recursive_lock_destroy(NAME) \
+-      do                                                               \
+-        {                                                              \
+-          if (pthread_in_use () && pthread_mutex_destroy (&NAME) != 0) \
+-            abort ();                                                  \
+-        }                                                              \
+-      while (0)
+-
+-#  else
+-
+-typedef struct
+-        {
+-          pthread_mutex_t recmutex; /* recursive mutex */
+-          pthread_mutex_t guard;    /* protects the initialization */
+-          int initialized;
+-        }
+-        gl_recursive_lock_t;
+-#   define gl_recursive_lock_define(STORAGECLASS, NAME) \
+-      STORAGECLASS gl_recursive_lock_t NAME;
+-#   define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+-      STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+-#   define gl_recursive_lock_initializer \
+-      { PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, 0 }
+-#   define gl_recursive_lock_init(NAME) \
+-      do                                          \
+-        {                                         \
+-          if (pthread_in_use ())                  \
+-            glthread_recursive_lock_init (&NAME); \
+-        }                                         \
+-      while (0)
+-#   define gl_recursive_lock_lock(NAME) \
+-      do                                          \
+-        {                                         \
+-          if (pthread_in_use ())                  \
+-            glthread_recursive_lock_lock (&NAME); \
+-        }                                         \
+-      while (0)
+-#   define gl_recursive_lock_unlock(NAME) \
+-      do                                            \
+-        {                                           \
+-          if (pthread_in_use ())                    \
+-            glthread_recursive_lock_unlock (&NAME); \
+-        }                                           \
+-      while (0)
+-#   define gl_recursive_lock_destroy(NAME) \
+-      do                                             \
+-        {                                            \
+-          if (pthread_in_use ())                     \
+-            glthread_recursive_lock_destroy (&NAME); \
+-        }                                            \
+-      while (0)
+-extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);
+-
+-#  endif
+-
+-# else
+-
+-/* Old versions of POSIX threads on Solaris did not have recursive locks.
+-   We have to implement them ourselves.  */
+-
+-typedef struct
+-        {
+-          pthread_mutex_t mutex;
+-          pthread_t owner;
+-          unsigned long depth;
+-        }
+-        gl_recursive_lock_t;
+-#  define gl_recursive_lock_define(STORAGECLASS, NAME) \
+-     STORAGECLASS gl_recursive_lock_t NAME;
+-#  define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+-     STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+-#  define gl_recursive_lock_initializer \
+-     { PTHREAD_MUTEX_INITIALIZER, (pthread_t) 0, 0 }
+-#  define gl_recursive_lock_init(NAME) \
+-     do                                          \
+-       {                                         \
+-         if (pthread_in_use ())                  \
+-           glthread_recursive_lock_init (&NAME); \
+-       }                                         \
+-     while (0)
+-#  define gl_recursive_lock_lock(NAME) \
+-     do                                          \
+-       {                                         \
+-         if (pthread_in_use ())                  \
+-           glthread_recursive_lock_lock (&NAME); \
+-       }                                         \
+-     while (0)
+-#  define gl_recursive_lock_unlock(NAME) \
+-     do                                            \
+-       {                                           \
+-         if (pthread_in_use ())                    \
+-           glthread_recursive_lock_unlock (&NAME); \
+-       }                                           \
+-     while (0)
+-#  define gl_recursive_lock_destroy(NAME) \
+-     do                                             \
+-       {                                            \
+-         if (pthread_in_use ())                     \
+-           glthread_recursive_lock_destroy (&NAME); \
+-       }                                            \
+-     while (0)
+-extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);
+-
+-# endif
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-typedef pthread_once_t gl_once_t;
+-# define gl_once_define(STORAGECLASS, NAME) \
+-    STORAGECLASS pthread_once_t NAME = PTHREAD_ONCE_INIT;
+-# define gl_once(NAME, INITFUNCTION) \
+-    do                                                   \
+-      {                                                  \
+-        if (pthread_in_use ())                           \
+-          {                                              \
+-            if (pthread_once (&NAME, INITFUNCTION) != 0) \
+-              abort ();                                  \
+-          }                                              \
+-        else                                             \
+-          {                                              \
+-            if (glthread_once_singlethreaded (&NAME))    \
+-              INITFUNCTION ();                           \
+-          }                                              \
+-      }                                                  \
+-    while (0)
+-extern int glthread_once_singlethreaded (pthread_once_t *once_control);
+-
+-# ifdef __cplusplus
+-}
+-# endif
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if USE_PTH_THREADS
+-
+-/* Use the GNU Pth threads library.  */
+-
+-# include <pth.h>
+-# include <stdlib.h>
+-
+-# ifdef __cplusplus
+-extern "C" {
+-# endif
+-
+-# if USE_PTH_THREADS_WEAK
+-
+-/* Use weak references to the GNU Pth threads library.  */
+-
+-#  pragma weak pth_mutex_init
+-#  pragma weak pth_mutex_acquire
+-#  pragma weak pth_mutex_release
+-#  pragma weak pth_rwlock_init
+-#  pragma weak pth_rwlock_acquire
+-#  pragma weak pth_rwlock_release
+-#  pragma weak pth_once
+-
+-#  pragma weak pth_cancel
+-#  define pth_in_use() (pth_cancel != NULL)
+-
+-# else
+-
+-#  define pth_in_use() 1
+-
+-# endif
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-typedef pth_mutex_t gl_lock_t;
+-# define gl_lock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS pth_mutex_t NAME;
+-# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS pth_mutex_t NAME = gl_lock_initializer;
+-# define gl_lock_initializer \
+-    PTH_MUTEX_INIT
+-# define gl_lock_init(NAME) \
+-    do                                               \
+-      {                                              \
+-        if (pth_in_use() && !pth_mutex_init (&NAME)) \
+-          abort ();                                  \
+-      }                                              \
+-    while (0)
+-# define gl_lock_lock(NAME) \
+-    do                                                           \
+-      {                                                          \
+-        if (pth_in_use() && !pth_mutex_acquire (&NAME, 0, NULL)) \
+-          abort ();                                              \
+-      }                                                          \
+-    while (0)
+-# define gl_lock_unlock(NAME) \
+-    do                                                  \
+-      {                                                 \
+-        if (pth_in_use() && !pth_mutex_release (&NAME)) \
+-          abort ();                                     \
+-      }                                                 \
+-    while (0)
+-# define gl_lock_destroy(NAME) \
+-    (void)(&NAME)
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-typedef pth_rwlock_t gl_rwlock_t;
+-#  define gl_rwlock_define(STORAGECLASS, NAME) \
+-     STORAGECLASS pth_rwlock_t NAME;
+-#  define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+-     STORAGECLASS pth_rwlock_t NAME = gl_rwlock_initializer;
+-#  define gl_rwlock_initializer \
+-     PTH_RWLOCK_INIT
+-#  define gl_rwlock_init(NAME) \
+-     do                                                \
+-       {                                               \
+-         if (pth_in_use() && !pth_rwlock_init (&NAME)) \
+-           abort ();                                   \
+-       }                                               \
+-     while (0)
+-#  define gl_rwlock_rdlock(NAME) \
+-     do                                                              \
+-       {                                                             \
+-         if (pth_in_use()                                            \
+-             && !pth_rwlock_acquire (&NAME, PTH_RWLOCK_RD, 0, NULL)) \
+-           abort ();                                                 \
+-       }                                                             \
+-     while (0)
+-#  define gl_rwlock_wrlock(NAME) \
+-     do                                                              \
+-       {                                                             \
+-         if (pth_in_use()                                            \
+-             && !pth_rwlock_acquire (&NAME, PTH_RWLOCK_RW, 0, NULL)) \
+-           abort ();                                                 \
+-       }                                                             \
+-     while (0)
+-#  define gl_rwlock_unlock(NAME) \
+-     do                                                   \
+-       {                                                  \
+-         if (pth_in_use() && !pth_rwlock_release (&NAME)) \
+-           abort ();                                      \
+-       }                                                  \
+-     while (0)
+-#  define gl_rwlock_destroy(NAME) \
+-     (void)(&NAME)
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-/* In Pth, mutexes are recursive by default.  */
+-typedef pth_mutex_t gl_recursive_lock_t;
+-#  define gl_recursive_lock_define(STORAGECLASS, NAME) \
+-     STORAGECLASS pth_mutex_t NAME;
+-#  define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+-     STORAGECLASS pth_mutex_t NAME = gl_recursive_lock_initializer;
+-#  define gl_recursive_lock_initializer \
+-     PTH_MUTEX_INIT
+-#  define gl_recursive_lock_init(NAME) \
+-     do                                               \
+-       {                                              \
+-         if (pth_in_use() && !pth_mutex_init (&NAME)) \
+-           abort ();                                  \
+-       }                                              \
+-     while (0)
+-#  define gl_recursive_lock_lock(NAME) \
+-     do                                                           \
+-       {                                                          \
+-         if (pth_in_use() && !pth_mutex_acquire (&NAME, 0, NULL)) \
+-           abort ();                                              \
+-       }                                                          \
+-     while (0)
+-#  define gl_recursive_lock_unlock(NAME) \
+-     do                                                  \
+-       {                                                 \
+-         if (pth_in_use() && !pth_mutex_release (&NAME)) \
+-           abort ();                                     \
+-       }                                                 \
+-     while (0)
+-#  define gl_recursive_lock_destroy(NAME) \
+-     (void)(&NAME)
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-typedef pth_once_t gl_once_t;
+-# define gl_once_define(STORAGECLASS, NAME) \
+-    STORAGECLASS pth_once_t NAME = PTH_ONCE_INIT;
+-# define gl_once(NAME, INITFUNCTION) \
+-    do                                                                \
+-      {                                                               \
+-        if (pth_in_use ())                                            \
+-          {                                                           \
+-            void (*gl_once_temp) (void) = INITFUNCTION;               \
+-            if (!pth_once (&NAME, glthread_once_call, &gl_once_temp)) \
+-              abort ();                                               \
+-          }                                                           \
+-        else                                                          \
+-          {                                                           \
+-            if (glthread_once_singlethreaded (&NAME))                 \
+-              INITFUNCTION ();                                        \
+-          }                                                           \
+-      }                                                               \
+-    while (0)
+-extern void glthread_once_call (void *arg);
+-extern int glthread_once_singlethreaded (pth_once_t *once_control);
+-
+-# ifdef __cplusplus
+-}
+-# endif
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if USE_SOLARIS_THREADS
+-
+-/* Use the old Solaris threads library.  */
+-
+-# include <thread.h>
+-# include <synch.h>
+-# include <stdlib.h>
+-
+-# ifdef __cplusplus
+-extern "C" {
+-# endif
+-
+-# if USE_SOLARIS_THREADS_WEAK
+-
+-/* Use weak references to the old Solaris threads library.  */
+-
+-#  pragma weak mutex_init
+-#  pragma weak mutex_lock
+-#  pragma weak mutex_unlock
+-#  pragma weak mutex_destroy
+-#  pragma weak rwlock_init
+-#  pragma weak rw_rdlock
+-#  pragma weak rw_wrlock
+-#  pragma weak rw_unlock
+-#  pragma weak rwlock_destroy
+-#  pragma weak thr_self
+-
+-#  pragma weak thr_suspend
+-#  define thread_in_use() (thr_suspend != NULL)
+-
+-# else
+-
+-#  define thread_in_use() 1
+-
+-# endif
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-typedef mutex_t gl_lock_t;
+-# define gl_lock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS mutex_t NAME;
+-# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS mutex_t NAME = gl_lock_initializer;
+-# define gl_lock_initializer \
+-    DEFAULTMUTEX
+-# define gl_lock_init(NAME) \
+-    do                                                                       \
+-      {                                                                      \
+-        if (thread_in_use () && mutex_init (&NAME, USYNC_THREAD, NULL) != 0) \
+-          abort ();                                                          \
+-      }                                                                      \
+-    while (0)
+-# define gl_lock_lock(NAME) \
+-    do                                                   \
+-      {                                                  \
+-        if (thread_in_use () && mutex_lock (&NAME) != 0) \
+-          abort ();                                      \
+-      }                                                  \
+-    while (0)
+-# define gl_lock_unlock(NAME) \
+-    do                                                     \
+-      {                                                    \
+-        if (thread_in_use () && mutex_unlock (&NAME) != 0) \
+-          abort ();                                        \
+-      }                                                    \
+-    while (0)
+-# define gl_lock_destroy(NAME) \
+-    do                                                      \
+-      {                                                     \
+-        if (thread_in_use () && mutex_destroy (&NAME) != 0) \
+-          abort ();                                         \
+-      }                                                     \
+-    while (0)
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-typedef rwlock_t gl_rwlock_t;
+-# define gl_rwlock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS rwlock_t NAME;
+-# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS rwlock_t NAME = gl_rwlock_initializer;
+-# define gl_rwlock_initializer \
+-    DEFAULTRWLOCK
+-# define gl_rwlock_init(NAME) \
+-    do                                                                        \
+-      {                                                                       \
+-        if (thread_in_use () && rwlock_init (&NAME, USYNC_THREAD, NULL) != 0) \
+-          abort ();                                                           \
+-      }                                                                       \
+-    while (0)
+-# define gl_rwlock_rdlock(NAME) \
+-    do                                                  \
+-      {                                                 \
+-        if (thread_in_use () && rw_rdlock (&NAME) != 0) \
+-          abort ();                                     \
+-      }                                                 \
+-    while (0)
+-# define gl_rwlock_wrlock(NAME) \
+-    do                                                  \
+-      {                                                 \
+-        if (thread_in_use () && rw_wrlock (&NAME) != 0) \
+-          abort ();                                     \
+-      }                                                 \
+-    while (0)
+-# define gl_rwlock_unlock(NAME) \
+-    do                                                  \
+-      {                                                 \
+-        if (thread_in_use () && rw_unlock (&NAME) != 0) \
+-          abort ();                                     \
+-      }                                                 \
+-    while (0)
+-# define gl_rwlock_destroy(NAME) \
+-    do                                                       \
+-      {                                                      \
+-        if (thread_in_use () && rwlock_destroy (&NAME) != 0) \
+-          abort ();                                          \
+-      }                                                      \
+-    while (0)
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-/* Old Solaris threads did not have recursive locks.
+-   We have to implement them ourselves.  */
+-
+-typedef struct
+-        {
+-          mutex_t mutex;
+-          thread_t owner;
+-          unsigned long depth;
+-        }
+-        gl_recursive_lock_t;
+-# define gl_recursive_lock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_recursive_lock_t NAME;
+-# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+-# define gl_recursive_lock_initializer \
+-    { DEFAULTMUTEX, (thread_t) 0, 0 }
+-# define gl_recursive_lock_init(NAME) \
+-    do                                          \
+-      {                                         \
+-        if (thread_in_use ())                   \
+-          glthread_recursive_lock_init (&NAME); \
+-      }                                         \
+-    while (0)
+-# define gl_recursive_lock_lock(NAME) \
+-    do                                          \
+-      {                                         \
+-        if (thread_in_use ())                   \
+-          glthread_recursive_lock_lock (&NAME); \
+-      }                                         \
+-    while (0)
+-# define gl_recursive_lock_unlock(NAME) \
+-    do                                            \
+-      {                                           \
+-        if (thread_in_use ())                     \
+-          glthread_recursive_lock_unlock (&NAME); \
+-      }                                           \
+-    while (0)
+-# define gl_recursive_lock_destroy(NAME) \
+-    do                                             \
+-      {                                            \
+-        if (thread_in_use ())                      \
+-          glthread_recursive_lock_destroy (&NAME); \
+-      }                                            \
+-    while (0)
+-extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-typedef struct
+-        {
+-          volatile int inited;
+-          mutex_t mutex;
+-        }
+-        gl_once_t;
+-# define gl_once_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX };
+-# define gl_once(NAME, INITFUNCTION) \
+-    do                                                \
+-      {                                               \
+-        if (thread_in_use ())                         \
+-          {                                           \
+-            glthread_once (&NAME, INITFUNCTION);      \
+-          }                                           \
+-        else                                          \
+-          {                                           \
+-            if (glthread_once_singlethreaded (&NAME)) \
+-              INITFUNCTION ();                        \
+-          }                                           \
+-      }                                               \
+-    while (0)
+-extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void));
+-extern int glthread_once_singlethreaded (gl_once_t *once_control);
+-
+-# ifdef __cplusplus
+-}
+-# endif
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if USE_WIN32_THREADS
+-
+-# include <windows.h>
+-
+-# ifdef __cplusplus
+-extern "C" {
+-# endif
+-
+-/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex,
+-   Semaphore types, because
+-     - we need only to synchronize inside a single process (address space),
+-       not inter-process locking,
+-     - we don't need to support trylock operations.  (TryEnterCriticalSection
+-       does not work on Windows 95/98/ME.  Packages that need trylock usually
+-       define their own mutex type.)  */
+-
+-/* There is no way to statically initialize a CRITICAL_SECTION.  It needs
+-   to be done lazily, once only.  For this we need spinlocks.  */
+-
+-typedef struct { volatile int done; volatile long started; } gl_spinlock_t;
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-typedef struct
+-        {
+-          gl_spinlock_t guard; /* protects the initialization */
+-          CRITICAL_SECTION lock;
+-        }
+-        gl_lock_t;
+-# define gl_lock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_lock_t NAME;
+-# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_lock_t NAME = gl_lock_initializer;
+-# define gl_lock_initializer \
+-    { { 0, -1 } }
+-# define gl_lock_init(NAME) \
+-    glthread_lock_init (&NAME)
+-# define gl_lock_lock(NAME) \
+-    glthread_lock_lock (&NAME)
+-# define gl_lock_unlock(NAME) \
+-    glthread_lock_unlock (&NAME)
+-# define gl_lock_destroy(NAME) \
+-    glthread_lock_destroy (&NAME)
+-extern void glthread_lock_init (gl_lock_t *lock);
+-extern void glthread_lock_lock (gl_lock_t *lock);
+-extern void glthread_lock_unlock (gl_lock_t *lock);
+-extern void glthread_lock_destroy (gl_lock_t *lock);
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-/* It is impossible to implement read-write locks using plain locks, without
+-   introducing an extra thread dedicated to managing read-write locks.
+-   Therefore here we need to use the low-level Event type.  */
+-
+-typedef struct
+-        {
+-          HANDLE *array; /* array of waiting threads, each represented by an event */
+-          unsigned int count; /* number of waiting threads */
+-          unsigned int alloc; /* length of allocated array */
+-          unsigned int offset; /* index of first waiting thread in array */
+-        }
+-        gl_waitqueue_t;
+-typedef struct
+-        {
+-          gl_spinlock_t guard; /* protects the initialization */
+-          CRITICAL_SECTION lock; /* protects the remaining fields */
+-          gl_waitqueue_t waiting_readers; /* waiting readers */
+-          gl_waitqueue_t waiting_writers; /* waiting writers */
+-          int runcount; /* number of readers running, or -1 when a writer runs */
+-        }
+-        gl_rwlock_t;
+-# define gl_rwlock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_rwlock_t NAME;
+-# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
+-# define gl_rwlock_initializer \
+-    { { 0, -1 } }
+-# define gl_rwlock_init(NAME) \
+-    glthread_rwlock_init (&NAME)
+-# define gl_rwlock_rdlock(NAME) \
+-    glthread_rwlock_rdlock (&NAME)
+-# define gl_rwlock_wrlock(NAME) \
+-    glthread_rwlock_wrlock (&NAME)
+-# define gl_rwlock_unlock(NAME) \
+-    glthread_rwlock_unlock (&NAME)
+-# define gl_rwlock_destroy(NAME) \
+-    glthread_rwlock_destroy (&NAME)
+-extern void glthread_rwlock_init (gl_rwlock_t *lock);
+-extern void glthread_rwlock_rdlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_wrlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_unlock (gl_rwlock_t *lock);
+-extern void glthread_rwlock_destroy (gl_rwlock_t *lock);
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-/* The Win32 documentation says that CRITICAL_SECTION already implements a
+-   recursive lock.  But we need not rely on it: It's easy to implement a
+-   recursive lock without this assumption.  */
+-
+-typedef struct
+-        {
+-          gl_spinlock_t guard; /* protects the initialization */
+-          DWORD owner;
+-          unsigned long depth;
+-          CRITICAL_SECTION lock;
+-        }
+-        gl_recursive_lock_t;
+-# define gl_recursive_lock_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_recursive_lock_t NAME;
+-# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
+-# define gl_recursive_lock_initializer \
+-    { { 0, -1 }, 0, 0 }
+-# define gl_recursive_lock_init(NAME) \
+-    glthread_recursive_lock_init (&NAME)
+-# define gl_recursive_lock_lock(NAME) \
+-    glthread_recursive_lock_lock (&NAME)
+-# define gl_recursive_lock_unlock(NAME) \
+-    glthread_recursive_lock_unlock (&NAME)
+-# define gl_recursive_lock_destroy(NAME) \
+-    glthread_recursive_lock_destroy (&NAME)
+-extern void glthread_recursive_lock_init (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_lock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);
+-extern void glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-typedef struct
+-        {
+-          volatile int inited;
+-          volatile long started;
+-          CRITICAL_SECTION lock;
+-        }
+-        gl_once_t;
+-# define gl_once_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_once_t NAME = { -1, -1 };
+-# define gl_once(NAME, INITFUNCTION) \
+-    glthread_once (&NAME, INITFUNCTION)
+-extern void glthread_once (gl_once_t *once_control, void (*initfunction) (void));
+-
+-# ifdef __cplusplus
+-}
+-# endif
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS)
+-
+-/* Provide dummy implementation if threads are not supported.  */
+-
+-/* -------------------------- gl_lock_t datatype -------------------------- */
+-
+-typedef int gl_lock_t;
+-# define gl_lock_define(STORAGECLASS, NAME)
+-# define gl_lock_define_initialized(STORAGECLASS, NAME)
+-# define gl_lock_init(NAME)
+-# define gl_lock_lock(NAME)
+-# define gl_lock_unlock(NAME)
+-
+-/* ------------------------- gl_rwlock_t datatype ------------------------- */
+-
+-typedef int gl_rwlock_t;
+-# define gl_rwlock_define(STORAGECLASS, NAME)
+-# define gl_rwlock_define_initialized(STORAGECLASS, NAME)
+-# define gl_rwlock_init(NAME)
+-# define gl_rwlock_rdlock(NAME)
+-# define gl_rwlock_wrlock(NAME)
+-# define gl_rwlock_unlock(NAME)
+-
+-/* --------------------- gl_recursive_lock_t datatype --------------------- */
+-
+-typedef int gl_recursive_lock_t;
+-# define gl_recursive_lock_define(STORAGECLASS, NAME)
+-# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME)
+-# define gl_recursive_lock_init(NAME)
+-# define gl_recursive_lock_lock(NAME)
+-# define gl_recursive_lock_unlock(NAME)
+-
+-/* -------------------------- gl_once_t datatype -------------------------- */
+-
+-typedef int gl_once_t;
+-# define gl_once_define(STORAGECLASS, NAME) \
+-    STORAGECLASS gl_once_t NAME = 0;
+-# define gl_once(NAME, INITFUNCTION) \
+-    do                       \
+-      {                      \
+-        if (NAME == 0)       \
+-          {                  \
+-            NAME = ~ 0;      \
+-            INITFUNCTION (); \
+-          }                  \
+-      }                      \
+-    while (0)
+-
+-#endif
+-
+-/* ========================================================================= */
+-
+-#endif /* _LOCK_H */
+--- a/intl/log.c
++++ /dev/null
+@@ -1,116 +0,0 @@
+-/* Log file output.
+-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Written by Bruno Haible <bruno@clisp.org>.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-#else
+-# include "lock.h"
+-#endif
+-
+-/* Print an ASCII string with quotes and escape sequences where needed.  */
+-static void
+-print_escaped (FILE *stream, const char *str)
+-{
+-  putc ('"', stream);
+-  for (; *str != '\0'; str++)
+-    if (*str == '\n')
+-      {
+-	fputs ("\\n\"", stream);
+-	if (str[1] == '\0')
+-	  return;
+-	fputs ("\n\"", stream);
+-      }
+-    else
+-      {
+-	if (*str == '"' || *str == '\\')
+-	  putc ('\\', stream);
+-	putc (*str, stream);
+-      }
+-  putc ('"', stream);
+-}
+-
+-static char *last_logfilename = NULL;
+-static FILE *last_logfile = NULL;
+-__libc_lock_define_initialized (static, lock)
+-
+-static inline void
+-_nl_log_untranslated_locked (const char *logfilename, const char *domainname,
+-			     const char *msgid1, const char *msgid2, int plural)
+-{
+-  FILE *logfile;
+-
+-  /* Can we reuse the last opened logfile?  */
+-  if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0)
+-    {
+-      /* Close the last used logfile.  */
+-      if (last_logfilename != NULL)
+-	{
+-	  if (last_logfile != NULL)
+-	    {
+-	      fclose (last_logfile);
+-	      last_logfile = NULL;
+-	    }
+-	  free (last_logfilename);
+-	  last_logfilename = NULL;
+-	}
+-      /* Open the logfile.  */
+-      last_logfilename = (char *) malloc (strlen (logfilename) + 1);
+-      if (last_logfilename == NULL)
+-	return;
+-      strcpy (last_logfilename, logfilename);
+-      last_logfile = fopen (logfilename, "a");
+-      if (last_logfile == NULL)
+-	return;
+-    }
+-  logfile = last_logfile;
+-
+-  fprintf (logfile, "domain ");
+-  print_escaped (logfile, domainname);
+-  fprintf (logfile, "\nmsgid ");
+-  print_escaped (logfile, msgid1);
+-  if (plural)
+-    {
+-      fprintf (logfile, "\nmsgid_plural ");
+-      print_escaped (logfile, msgid2);
+-      fprintf (logfile, "\nmsgstr[0] \"\"\n");
+-    }
+-  else
+-    fprintf (logfile, "\nmsgstr \"\"\n");
+-  putc ('\n', logfile);
+-}
+-
+-/* Add to the log file an entry denoting a failed translation.  */
+-void
+-_nl_log_untranslated (const char *logfilename, const char *domainname,
+-		      const char *msgid1, const char *msgid2, int plural)
+-{
+-  __libc_lock_lock (lock);
+-  _nl_log_untranslated_locked (logfilename, domainname, msgid1, msgid2, plural);
+-  __libc_lock_unlock (lock);
+-}
+--- a/intl/ngettext.c
++++ /dev/null
+@@ -1,65 +0,0 @@
+-/* Implementation of ngettext(3) function.
+-   Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#ifdef _LIBC
+-# define __need_NULL
+-# include <stddef.h>
+-#else
+-# include <stdlib.h>		/* Just for NULL.  */
+-#endif
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-#include <locale.h>
+-
+-/* @@ end of prolog @@ */
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define NGETTEXT __ngettext
+-# define DCNGETTEXT __dcngettext
+-#else
+-# define NGETTEXT libintl_ngettext
+-# define DCNGETTEXT libintl_dcngettext
+-#endif
+-
+-/* Look up MSGID in the current default message catalog for the current
+-   LC_MESSAGES locale.  If not found, returns MSGID itself (the default
+-   text).  */
+-char *
+-NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n)
+-{
+-  return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-weak_alias (__ngettext, ngettext);
+-#endif
+--- a/intl/os2compat.c
++++ /dev/null
+@@ -1,98 +0,0 @@
+-/* OS/2 compatibility functions.
+-   Copyright (C) 2001-2002 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#define OS2_AWARE
+-#ifdef HAVE_CONFIG_H
+-#include <config.h>
+-#endif
+-
+-#include <stdlib.h>
+-#include <string.h>
+-#include <sys/param.h>
+-
+-/* A version of getenv() that works from DLLs */
+-extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue);
+-
+-char *
+-_nl_getenv (const char *name)
+-{
+-  unsigned char *value;
+-  if (DosScanEnv (name, &value))
+-    return NULL;
+-  else
+-    return value;
+-}
+-
+-/* A fixed size buffer.  */
+-char libintl_nl_default_dirname[MAXPATHLEN+1];
+-
+-char *_nlos2_libdir = NULL;
+-char *_nlos2_localealiaspath = NULL;
+-char *_nlos2_localedir = NULL;
+-
+-static __attribute__((constructor)) void
+-nlos2_initialize ()
+-{
+-  char *root = getenv ("UNIXROOT");
+-  char *gnulocaledir = getenv ("GNULOCALEDIR");
+-
+-  _nlos2_libdir = gnulocaledir;
+-  if (!_nlos2_libdir)
+-    {
+-      if (root)
+-        {
+-          size_t sl = strlen (root);
+-          _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1);
+-          memcpy (_nlos2_libdir, root, sl);
+-          memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1);
+-        }
+-      else
+-        _nlos2_libdir = LIBDIR;
+-    }
+-
+-  _nlos2_localealiaspath = gnulocaledir;
+-  if (!_nlos2_localealiaspath)
+-    {
+-      if (root)
+-        {
+-          size_t sl = strlen (root);
+-          _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1);
+-          memcpy (_nlos2_localealiaspath, root, sl);
+-          memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1);
+-        }
+-     else
+-        _nlos2_localealiaspath = LOCALE_ALIAS_PATH;
+-    }
+-
+-  _nlos2_localedir = gnulocaledir;
+-  if (!_nlos2_localedir)
+-    {
+-      if (root)
+-        {
+-          size_t sl = strlen (root);
+-          _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1);
+-          memcpy (_nlos2_localedir, root, sl);
+-          memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1);
+-        }
+-      else
+-        _nlos2_localedir = LOCALEDIR;
+-    }
+-
+-  if (strlen (_nlos2_localedir) <= MAXPATHLEN)
+-    strcpy (libintl_nl_default_dirname, _nlos2_localedir);
+-}
+--- a/intl/os2compat.h
++++ /dev/null
+@@ -1,46 +0,0 @@
+-/* OS/2 compatibility defines.
+-   This file is intended to be included from config.h
+-   Copyright (C) 2001-2002 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* When included from os2compat.h we need all the original definitions */
+-#ifndef OS2_AWARE
+-
+-#undef LIBDIR
+-#define LIBDIR			_nlos2_libdir
+-extern char *_nlos2_libdir;
+-
+-#undef LOCALEDIR
+-#define LOCALEDIR		_nlos2_localedir
+-extern char *_nlos2_localedir;
+-
+-#undef LOCALE_ALIAS_PATH
+-#define LOCALE_ALIAS_PATH	_nlos2_localealiaspath
+-extern char *_nlos2_localealiaspath;
+-
+-#endif
+-
+-#undef HAVE_STRCASECMP
+-#define HAVE_STRCASECMP 1
+-#define strcasecmp stricmp
+-#define strncasecmp strnicmp
+-
+-/* We have our own getenv() which works even if library is compiled as DLL */
+-#define getenv _nl_getenv
+-
+-/* Older versions of gettext used -1 as the value of LC_MESSAGES */
+-#define LC_MESSAGES_COMPAT (-1)
+--- a/intl/osdep.c
++++ /dev/null
+@@ -1,26 +0,0 @@
+-/* OS dependent parts of libintl.
+-   Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#if defined __CYGWIN__
+-# include "intl-exports.c"
+-#elif defined __EMX__
+-# include "os2compat.c"
+-#else
+-/* Avoid AIX compiler warning.  */
+-typedef int dummy;
+-#endif
+--- a/intl/plural-exp.c
++++ /dev/null
+@@ -1,155 +0,0 @@
+-/* Expression parsing for plural form selection.
+-   Copyright (C) 2000-2001, 2003, 2005-2007 Free Software Foundation, Inc.
+-   Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <ctype.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#include "plural-exp.h"
+-
+-#if (defined __GNUC__ && !(__APPLE_CC__ > 1) && !defined __cplusplus) \
+-    || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+-
+-/* These structs are the constant expression for the germanic plural
+-   form determination.  It represents the expression  "n != 1".  */
+-static const struct expression plvar =
+-{
+-  .nargs = 0,
+-  .operation = var,
+-};
+-static const struct expression plone =
+-{
+-  .nargs = 0,
+-  .operation = num,
+-  .val =
+-  {
+-    .num = 1
+-  }
+-};
+-struct expression GERMANIC_PLURAL =
+-{
+-  .nargs = 2,
+-  .operation = not_equal,
+-  .val =
+-  {
+-    .args =
+-    {
+-      [0] = (struct expression *) &plvar,
+-      [1] = (struct expression *) &plone
+-    }
+-  }
+-};
+-
+-# define INIT_GERMANIC_PLURAL()
+-
+-#else
+-
+-/* For compilers without support for ISO C 99 struct/union initializers:
+-   Initialization at run-time.  */
+-
+-static struct expression plvar;
+-static struct expression plone;
+-struct expression GERMANIC_PLURAL;
+-
+-static void
+-init_germanic_plural ()
+-{
+-  if (plone.val.num == 0)
+-    {
+-      plvar.nargs = 0;
+-      plvar.operation = var;
+-
+-      plone.nargs = 0;
+-      plone.operation = num;
+-      plone.val.num = 1;
+-
+-      GERMANIC_PLURAL.nargs = 2;
+-      GERMANIC_PLURAL.operation = not_equal;
+-      GERMANIC_PLURAL.val.args[0] = &plvar;
+-      GERMANIC_PLURAL.val.args[1] = &plone;
+-    }
+-}
+-
+-# define INIT_GERMANIC_PLURAL() init_germanic_plural ()
+-
+-#endif
+-
+-void
+-internal_function
+-EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
+-			   const struct expression **pluralp,
+-			   unsigned long int *npluralsp)
+-{
+-  if (nullentry != NULL)
+-    {
+-      const char *plural;
+-      const char *nplurals;
+-
+-      plural = strstr (nullentry, "plural=");
+-      nplurals = strstr (nullentry, "nplurals=");
+-      if (plural == NULL || nplurals == NULL)
+-	goto no_plural;
+-      else
+-	{
+-	  char *endp;
+-	  unsigned long int n;
+-	  struct parse_args args;
+-
+-	  /* First get the number.  */
+-	  nplurals += 9;
+-	  while (*nplurals != '\0' && isspace ((unsigned char) *nplurals))
+-	    ++nplurals;
+-	  if (!(*nplurals >= '0' && *nplurals <= '9'))
+-	    goto no_plural;
+-#if defined HAVE_STRTOUL || defined _LIBC
+-	  n = strtoul (nplurals, &endp, 10);
+-#else
+-	  for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)
+-	    n = n * 10 + (*endp - '0');
+-#endif
+-	  if (nplurals == endp)
+-	    goto no_plural;
+-	  *npluralsp = n;
+-
+-	  /* Due to the restrictions bison imposes onto the interface of the
+-	     scanner function we have to put the input string and the result
+-	     passed up from the parser into the same structure which address
+-	     is passed down to the parser.  */
+-	  plural += 7;
+-	  args.cp = plural;
+-	  if (PLURAL_PARSE (&args) != 0)
+-	    goto no_plural;
+-	  *pluralp = args.res;
+-	}
+-    }
+-  else
+-    {
+-      /* By default we are using the Germanic form: singular form only
+-         for `one', the plural form otherwise.  Yes, this is also what
+-         English is using since English is a Germanic language.  */
+-    no_plural:
+-      INIT_GERMANIC_PLURAL ();
+-      *pluralp = &GERMANIC_PLURAL;
+-      *npluralsp = 2;
+-    }
+-}
+--- a/intl/plural-exp.h
++++ /dev/null
+@@ -1,129 +0,0 @@
+-/* Expression parsing and evaluation for plural form selection.
+-   Copyright (C) 2000-2003, 2005-2007 Free Software Foundation, Inc.
+-   Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _PLURAL_EXP_H
+-#define _PLURAL_EXP_H
+-
+-#ifndef internal_function
+-# define internal_function
+-#endif
+-
+-#ifndef attribute_hidden
+-# define attribute_hidden
+-#endif
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-
+-enum expression_operator
+-{
+-  /* Without arguments:  */
+-  var,				/* The variable "n".  */
+-  num,				/* Decimal number.  */
+-  /* Unary operators:  */
+-  lnot,				/* Logical NOT.  */
+-  /* Binary operators:  */
+-  mult,				/* Multiplication.  */
+-  divide,			/* Division.  */
+-  module,			/* Modulo operation.  */
+-  plus,				/* Addition.  */
+-  minus,			/* Subtraction.  */
+-  less_than,			/* Comparison.  */
+-  greater_than,			/* Comparison.  */
+-  less_or_equal,		/* Comparison.  */
+-  greater_or_equal,		/* Comparison.  */
+-  equal,			/* Comparison for equality.  */
+-  not_equal,			/* Comparison for inequality.  */
+-  land,				/* Logical AND.  */
+-  lor,				/* Logical OR.  */
+-  /* Ternary operators:  */
+-  qmop				/* Question mark operator.  */
+-};
+-
+-/* This is the representation of the expressions to determine the
+-   plural form.  */
+-struct expression
+-{
+-  int nargs;			/* Number of arguments.  */
+-  enum expression_operator operation;
+-  union
+-  {
+-    unsigned long int num;	/* Number value for `num'.  */
+-    struct expression *args[3];	/* Up to three arguments.  */
+-  } val;
+-};
+-
+-/* This is the data structure to pass information to the parser and get
+-   the result in a thread-safe way.  */
+-struct parse_args
+-{
+-  const char *cp;
+-  struct expression *res;
+-};
+-
+-
+-/* Names for the libintl functions are a problem.  This source code is used
+-   1. in the GNU C Library library,
+-   2. in the GNU libintl library,
+-   3. in the GNU gettext tools.
+-   The function names in each situation must be different, to allow for
+-   binary incompatible changes in 'struct expression'.  Furthermore,
+-   1. in the GNU C Library library, the names have a __ prefix,
+-   2.+3. in the GNU libintl library and in the GNU gettext tools, the names
+-         must follow ANSI C and not start with __.
+-   So we have to distinguish the three cases.  */
+-#ifdef _LIBC
+-# define FREE_EXPRESSION __gettext_free_exp
+-# define PLURAL_PARSE __gettextparse
+-# define GERMANIC_PLURAL __gettext_germanic_plural
+-# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural
+-#elif defined (IN_LIBINTL)
+-# define FREE_EXPRESSION libintl_gettext_free_exp
+-# define PLURAL_PARSE libintl_gettextparse
+-# define GERMANIC_PLURAL libintl_gettext_germanic_plural
+-# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural
+-#else
+-# define FREE_EXPRESSION free_plural_expression
+-# define PLURAL_PARSE parse_plural_expression
+-# define GERMANIC_PLURAL germanic_plural
+-# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression
+-#endif
+-
+-extern void FREE_EXPRESSION (struct expression *exp)
+-     internal_function;
+-extern int PLURAL_PARSE (void *arg);
+-extern struct expression GERMANIC_PLURAL attribute_hidden;
+-extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
+-				       const struct expression **pluralp,
+-				       unsigned long int *npluralsp)
+-     internal_function;
+-
+-#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE)
+-extern unsigned long int plural_eval (const struct expression *pexp,
+-				      unsigned long int n);
+-#endif
+-
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* _PLURAL_EXP_H */
+--- a/intl/plural.c
++++ /dev/null
+@@ -1,1981 +0,0 @@
+-
+-/* A Bison parser, made by GNU Bison 2.4.1.  */
+-
+-/* Skeleton implementation for Bison's Yacc-like parsers in C
+-   
+-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+-   Free Software Foundation, Inc.
+-   
+-   This program is free software: you can redistribute it and/or modify
+-   it under the terms of the GNU General Public License as published by
+-   the Free Software Foundation, either version 3 of the License, or
+-   (at your option) any later version.
+-   
+-   This program is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-   GNU General Public License for more details.
+-   
+-   You should have received a copy of the GNU General Public License
+-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+-
+-/* As a special exception, you may create a larger work that contains
+-   part or all of the Bison parser skeleton and distribute that work
+-   under terms of your choice, so long as that work isn't itself a
+-   parser generator using the skeleton or a modified version thereof
+-   as a parser skeleton.  Alternatively, if you modify or redistribute
+-   the parser skeleton itself, you may (at your option) remove this
+-   special exception, which will cause the skeleton and the resulting
+-   Bison output files to be licensed under the GNU General Public
+-   License without this special exception.
+-   
+-   This special exception was added by the Free Software Foundation in
+-   version 2.2 of Bison.  */
+-
+-/* C LALR(1) parser skeleton written by Richard Stallman, by
+-   simplifying the original so-called "semantic" parser.  */
+-
+-/* All symbols defined below should begin with yy or YY, to avoid
+-   infringing on user name space.  This should be done even for local
+-   variables, as they might otherwise be expanded by user macros.
+-   There are some unavoidable exceptions within include files to
+-   define necessary library symbols; they are noted "INFRINGES ON
+-   USER NAME SPACE" below.  */
+-
+-/* Identify Bison output.  */
+-#define YYBISON 1
+-
+-/* Bison version.  */
+-#define YYBISON_VERSION "2.4.1"
+-
+-/* Skeleton name.  */
+-#define YYSKELETON_NAME "yacc.c"
+-
+-/* Pure parsers.  */
+-#define YYPURE 1
+-
+-/* Push parsers.  */
+-#define YYPUSH 0
+-
+-/* Pull parsers.  */
+-#define YYPULL 1
+-
+-/* Using locations.  */
+-#define YYLSP_NEEDED 0
+-
+-/* Substitute the variable and function names.  */
+-#define yyparse         __gettextparse
+-#define yylex           __gettextlex
+-#define yyerror         __gettexterror
+-#define yylval          __gettextlval
+-#define yychar          __gettextchar
+-#define yydebug         __gettextdebug
+-#define yynerrs         __gettextnerrs
+-
+-
+-/* Copy the first part of user declarations.  */
+-
+-/* Line 189 of yacc.c  */
+-#line 1 "plural.y"
+-
+-/* Expression parsing for plural form selection.
+-   Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc.
+-   Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* For bison < 2.0, the bison generated parser uses alloca.  AIX 3 forces us
+-   to put this declaration at the beginning of the file.  The declaration in
+-   bison's skeleton file comes too late.  This must come before <config.h>
+-   because <config.h> may include arbitrary system headers.
+-   This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0.  */
+-#if defined _AIX && !defined __GNUC__
+- #pragma alloca
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stddef.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include "plural-exp.h"
+-
+-/* The main function generated by the parser is called __gettextparse,
+-   but we want it to be called PLURAL_PARSE.  */
+-#ifndef _LIBC
+-# define __gettextparse PLURAL_PARSE
+-#endif
+-
+-#define YYLEX_PARAM	&((struct parse_args *) arg)->cp
+-#define YYPARSE_PARAM	arg
+-
+-
+-/* Line 189 of yacc.c  */
+-#line 130 "plural.c"
+-
+-/* Enabling traces.  */
+-#ifndef YYDEBUG
+-# define YYDEBUG 0
+-#endif
+-
+-/* Enabling verbose error messages.  */
+-#ifdef YYERROR_VERBOSE
+-# undef YYERROR_VERBOSE
+-# define YYERROR_VERBOSE 1
+-#else
+-# define YYERROR_VERBOSE 0
+-#endif
+-
+-/* Enabling the token table.  */
+-#ifndef YYTOKEN_TABLE
+-# define YYTOKEN_TABLE 0
+-#endif
+-
+-
+-/* Tokens.  */
+-#ifndef YYTOKENTYPE
+-# define YYTOKENTYPE
+-   /* Put the tokens into the symbol table, so that GDB and other debuggers
+-      know about them.  */
+-   enum yytokentype {
+-     EQUOP2 = 258,
+-     CMPOP2 = 259,
+-     ADDOP2 = 260,
+-     MULOP2 = 261,
+-     NUMBER = 262
+-   };
+-#endif
+-/* Tokens.  */
+-#define EQUOP2 258
+-#define CMPOP2 259
+-#define ADDOP2 260
+-#define MULOP2 261
+-#define NUMBER 262
+-
+-
+-
+-
+-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE
+-{
+-
+-/* Line 214 of yacc.c  */
+-#line 51 "plural.y"
+-
+-  unsigned long int num;
+-  enum expression_operator op;
+-  struct expression *exp;
+-
+-
+-
+-/* Line 214 of yacc.c  */
+-#line 188 "plural.c"
+-} YYSTYPE;
+-# define YYSTYPE_IS_TRIVIAL 1
+-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+-# define YYSTYPE_IS_DECLARED 1
+-#endif
+-
+-
+-/* Copy the second part of user declarations.  */
+-
+-/* Line 264 of yacc.c  */
+-#line 57 "plural.y"
+-
+-/* Prototypes for local functions.  */
+-static int yylex (YYSTYPE *lval, const char **pexp);
+-static void yyerror (const char *str);
+-
+-/* Allocation of expressions.  */
+-
+-static struct expression *
+-new_exp (int nargs, enum expression_operator op,
+-	 struct expression * const *args)
+-{
+-  int i;
+-  struct expression *newp;
+-
+-  /* If any of the argument could not be malloc'ed, just return NULL.  */
+-  for (i = nargs - 1; i >= 0; i--)
+-    if (args[i] == NULL)
+-      goto fail;
+-
+-  /* Allocate a new expression.  */
+-  newp = (struct expression *) malloc (sizeof (*newp));
+-  if (newp != NULL)
+-    {
+-      newp->nargs = nargs;
+-      newp->operation = op;
+-      for (i = nargs - 1; i >= 0; i--)
+-	newp->val.args[i] = args[i];
+-      return newp;
+-    }
+-
+- fail:
+-  for (i = nargs - 1; i >= 0; i--)
+-    FREE_EXPRESSION (args[i]);
+-
+-  return NULL;
+-}
+-
+-static inline struct expression *
+-new_exp_0 (enum expression_operator op)
+-{
+-  return new_exp (0, op, NULL);
+-}
+-
+-static inline struct expression *
+-new_exp_1 (enum expression_operator op, struct expression *right)
+-{
+-  struct expression *args[1];
+-
+-  args[0] = right;
+-  return new_exp (1, op, args);
+-}
+-
+-static struct expression *
+-new_exp_2 (enum expression_operator op, struct expression *left,
+-	   struct expression *right)
+-{
+-  struct expression *args[2];
+-
+-  args[0] = left;
+-  args[1] = right;
+-  return new_exp (2, op, args);
+-}
+-
+-static inline struct expression *
+-new_exp_3 (enum expression_operator op, struct expression *bexp,
+-	   struct expression *tbranch, struct expression *fbranch)
+-{
+-  struct expression *args[3];
+-
+-  args[0] = bexp;
+-  args[1] = tbranch;
+-  args[2] = fbranch;
+-  return new_exp (3, op, args);
+-}
+-
+-
+-
+-/* Line 264 of yacc.c  */
+-#line 278 "plural.c"
+-
+-#ifdef short
+-# undef short
+-#endif
+-
+-#ifdef YYTYPE_UINT8
+-typedef YYTYPE_UINT8 yytype_uint8;
+-#else
+-typedef unsigned char yytype_uint8;
+-#endif
+-
+-#ifdef YYTYPE_INT8
+-typedef YYTYPE_INT8 yytype_int8;
+-#elif (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-typedef signed char yytype_int8;
+-#else
+-typedef short int yytype_int8;
+-#endif
+-
+-#ifdef YYTYPE_UINT16
+-typedef YYTYPE_UINT16 yytype_uint16;
+-#else
+-typedef unsigned short int yytype_uint16;
+-#endif
+-
+-#ifdef YYTYPE_INT16
+-typedef YYTYPE_INT16 yytype_int16;
+-#else
+-typedef short int yytype_int16;
+-#endif
+-
+-#ifndef YYSIZE_T
+-# ifdef __SIZE_TYPE__
+-#  define YYSIZE_T __SIZE_TYPE__
+-# elif defined size_t
+-#  define YYSIZE_T size_t
+-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# else
+-#  define YYSIZE_T unsigned int
+-# endif
+-#endif
+-
+-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+-
+-#ifndef YY_
+-# if YYENABLE_NLS
+-#  if ENABLE_NLS
+-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+-#  endif
+-# endif
+-# ifndef YY_
+-#  define YY_(msgid) msgid
+-# endif
+-#endif
+-
+-/* Suppress unused-variable warnings by "using" E.  */
+-#if ! defined lint || defined __GNUC__
+-# define YYUSE(e) ((void) (e))
+-#else
+-# define YYUSE(e) /* empty */
+-#endif
+-
+-/* Identity function, used to suppress warnings about constant conditions.  */
+-#ifndef lint
+-# define YYID(n) (n)
+-#else
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static int
+-YYID (int yyi)
+-#else
+-static int
+-YYID (yyi)
+-    int yyi;
+-#endif
+-{
+-  return yyi;
+-}
+-#endif
+-
+-#if ! defined yyoverflow || YYERROR_VERBOSE
+-
+-/* The parser invokes alloca or malloc; define the necessary symbols.  */
+-
+-# ifdef YYSTACK_USE_ALLOCA
+-#  if YYSTACK_USE_ALLOCA
+-#   ifdef __GNUC__
+-#    define YYSTACK_ALLOC __builtin_alloca
+-#   elif defined __BUILTIN_VA_ARG_INCR
+-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+-#   elif defined _AIX
+-#    define YYSTACK_ALLOC __alloca
+-#   elif defined _MSC_VER
+-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+-#    define alloca _alloca
+-#   else
+-#    define YYSTACK_ALLOC alloca
+-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#     ifndef _STDLIB_H
+-#      define _STDLIB_H 1
+-#     endif
+-#    endif
+-#   endif
+-#  endif
+-# endif
+-
+-# ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning.  */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+-#  ifndef YYSTACK_ALLOC_MAXIMUM
+-    /* The OS might guarantee only one guard page at the bottom of the stack,
+-       and a page size can be as small as 4096 bytes.  So we cannot safely
+-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+-       to allow for a few compiler-allocated temporary stack slots.  */
+-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+-#  endif
+-# else
+-#  define YYSTACK_ALLOC YYMALLOC
+-#  define YYSTACK_FREE YYFREE
+-#  ifndef YYSTACK_ALLOC_MAXIMUM
+-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+-#  endif
+-#  if (defined __cplusplus && ! defined _STDLIB_H \
+-       && ! ((defined YYMALLOC || defined malloc) \
+-	     && (defined YYFREE || defined free)))
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   ifndef _STDLIB_H
+-#    define _STDLIB_H 1
+-#   endif
+-#  endif
+-#  ifndef YYMALLOC
+-#   define YYMALLOC malloc
+-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+-#   endif
+-#  endif
+-#  ifndef YYFREE
+-#   define YYFREE free
+-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-void free (void *); /* INFRINGES ON USER NAME SPACE */
+-#   endif
+-#  endif
+-# endif
+-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+-
+-
+-#if (! defined yyoverflow \
+-     && (! defined __cplusplus \
+-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+-
+-/* A type that is properly aligned for any stack member.  */
+-union yyalloc
+-{
+-  yytype_int16 yyss_alloc;
+-  YYSTYPE yyvs_alloc;
+-};
+-
+-/* The size of the maximum gap between one aligned stack and the next.  */
+-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+-
+-/* The size of an array large to enough to hold all stacks, each with
+-   N elements.  */
+-# define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+-      + YYSTACK_GAP_MAXIMUM)
+-
+-/* Copy COUNT objects from FROM to TO.  The source and destination do
+-   not overlap.  */
+-# ifndef YYCOPY
+-#  if defined __GNUC__ && 1 < __GNUC__
+-#   define YYCOPY(To, From, Count) \
+-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+-#  else
+-#   define YYCOPY(To, From, Count)		\
+-      do					\
+-	{					\
+-	  YYSIZE_T yyi;				\
+-	  for (yyi = 0; yyi < (Count); yyi++)	\
+-	    (To)[yyi] = (From)[yyi];		\
+-	}					\
+-      while (YYID (0))
+-#  endif
+-# endif
+-
+-/* Relocate STACK from its old location to the new one.  The
+-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+-   elements in the stack, and YYPTR gives the new location of the
+-   stack.  Advance YYPTR to a properly aligned location for the next
+-   stack.  */
+-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+-    do									\
+-      {									\
+-	YYSIZE_T yynewbytes;						\
+-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+-	Stack = &yyptr->Stack_alloc;					\
+-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+-	yyptr += yynewbytes / sizeof (*yyptr);				\
+-      }									\
+-    while (YYID (0))
+-
+-#endif
+-
+-/* YYFINAL -- State number of the termination state.  */
+-#define YYFINAL  9
+-/* YYLAST -- Last index in YYTABLE.  */
+-#define YYLAST   54
+-
+-/* YYNTOKENS -- Number of terminals.  */
+-#define YYNTOKENS  16
+-/* YYNNTS -- Number of nonterminals.  */
+-#define YYNNTS  3
+-/* YYNRULES -- Number of rules.  */
+-#define YYNRULES  13
+-/* YYNRULES -- Number of states.  */
+-#define YYNSTATES  27
+-
+-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+-#define YYUNDEFTOK  2
+-#define YYMAXUTOK   262
+-
+-#define YYTRANSLATE(YYX)						\
+-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+-
+-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const yytype_uint8 yytranslate[] =
+-{
+-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,    10,     2,     2,     2,     2,     5,     2,
+-      14,    15,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,    12,     2,
+-       2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-      13,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     4,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     1,     2,     6,     7,
+-       8,     9,    11
+-};
+-
+-#if YYDEBUG
+-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+-   YYRHS.  */
+-static const yytype_uint8 yyprhs[] =
+-{
+-       0,     0,     3,     5,    11,    15,    19,    23,    27,    31,
+-      35,    38,    40,    42
+-};
+-
+-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+-static const yytype_int8 yyrhs[] =
+-{
+-      17,     0,    -1,    18,    -1,    18,     3,    18,    12,    18,
+-      -1,    18,     4,    18,    -1,    18,     5,    18,    -1,    18,
+-       6,    18,    -1,    18,     7,    18,    -1,    18,     8,    18,
+-      -1,    18,     9,    18,    -1,    10,    18,    -1,    13,    -1,
+-      11,    -1,    14,    18,    15,    -1
+-};
+-
+-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const yytype_uint8 yyrline[] =
+-{
+-       0,   154,   154,   162,   166,   170,   174,   178,   182,   186,
+-     190,   194,   198,   203
+-};
+-#endif
+-
+-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+-static const char *const yytname[] =
+-{
+-  "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2",
+-  "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'",
+-  "$accept", "start", "exp", 0
+-};
+-#endif
+-
+-# ifdef YYPRINT
+-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+-   token YYLEX-NUM.  */
+-static const yytype_uint16 yytoknum[] =
+-{
+-       0,   256,   257,    63,   124,    38,   258,   259,   260,   261,
+-      33,   262,    58,   110,    40,    41
+-};
+-# endif
+-
+-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const yytype_uint8 yyr1[] =
+-{
+-       0,    16,    17,    18,    18,    18,    18,    18,    18,    18,
+-      18,    18,    18,    18
+-};
+-
+-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const yytype_uint8 yyr2[] =
+-{
+-       0,     2,     1,     5,     3,     3,     3,     3,     3,     3,
+-       2,     1,     1,     3
+-};
+-
+-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+-   means the default is an error.  */
+-static const yytype_uint8 yydefact[] =
+-{
+-       0,     0,    12,    11,     0,     0,     2,    10,     0,     1,
+-       0,     0,     0,     0,     0,     0,     0,    13,     0,     4,
+-       5,     6,     7,     8,     9,     0,     3
+-};
+-
+-/* YYDEFGOTO[NTERM-NUM].  */
+-static const yytype_int8 yydefgoto[] =
+-{
+-      -1,     5,     6
+-};
+-
+-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+-   STATE-NUM.  */
+-#define YYPACT_NINF -10
+-static const yytype_int8 yypact[] =
+-{
+-      -9,    -9,   -10,   -10,    -9,     8,    36,   -10,    13,   -10,
+-      -9,    -9,    -9,    -9,    -9,    -9,    -9,   -10,    26,    41,
+-      45,    18,    -2,    14,   -10,    -9,    36
+-};
+-
+-/* YYPGOTO[NTERM-NUM].  */
+-static const yytype_int8 yypgoto[] =
+-{
+-     -10,   -10,    -1
+-};
+-
+-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+-   positive, shift that token.  If negative, reduce the rule which
+-   number is the opposite.  If zero, do what YYDEFACT says.
+-   If YYTABLE_NINF, syntax error.  */
+-#define YYTABLE_NINF -1
+-static const yytype_uint8 yytable[] =
+-{
+-       7,     1,     2,     8,     3,     4,    15,    16,     9,    18,
+-      19,    20,    21,    22,    23,    24,    10,    11,    12,    13,
+-      14,    15,    16,    16,    26,    14,    15,    16,    17,    10,
+-      11,    12,    13,    14,    15,    16,     0,     0,    25,    10,
+-      11,    12,    13,    14,    15,    16,    12,    13,    14,    15,
+-      16,    13,    14,    15,    16
+-};
+-
+-static const yytype_int8 yycheck[] =
+-{
+-       1,    10,    11,     4,    13,    14,     8,     9,     0,    10,
+-      11,    12,    13,    14,    15,    16,     3,     4,     5,     6,
+-       7,     8,     9,     9,    25,     7,     8,     9,    15,     3,
+-       4,     5,     6,     7,     8,     9,    -1,    -1,    12,     3,
+-       4,     5,     6,     7,     8,     9,     5,     6,     7,     8,
+-       9,     6,     7,     8,     9
+-};
+-
+-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+-   symbol of state STATE-NUM.  */
+-static const yytype_uint8 yystos[] =
+-{
+-       0,    10,    11,    13,    14,    17,    18,    18,    18,     0,
+-       3,     4,     5,     6,     7,     8,     9,    15,    18,    18,
+-      18,    18,    18,    18,    18,    12,    18
+-};
+-
+-#define yyerrok		(yyerrstatus = 0)
+-#define yyclearin	(yychar = YYEMPTY)
+-#define YYEMPTY		(-2)
+-#define YYEOF		0
+-
+-#define YYACCEPT	goto yyacceptlab
+-#define YYABORT		goto yyabortlab
+-#define YYERROR		goto yyerrorlab
+-
+-
+-/* Like YYERROR except do call yyerror.  This remains here temporarily
+-   to ease the transition to the new meaning of YYERROR, for GCC.
+-   Once GCC version 2 has supplanted version 1, this can go.  */
+-
+-#define YYFAIL		goto yyerrlab
+-
+-#define YYRECOVERING()  (!!yyerrstatus)
+-
+-#define YYBACKUP(Token, Value)					\
+-do								\
+-  if (yychar == YYEMPTY && yylen == 1)				\
+-    {								\
+-      yychar = (Token);						\
+-      yylval = (Value);						\
+-      yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK (1);						\
+-      goto yybackup;						\
+-    }								\
+-  else								\
+-    {								\
+-      yyerror (YY_("syntax error: cannot back up")); \
+-      YYERROR;							\
+-    }								\
+-while (YYID (0))
+-
+-
+-#define YYTERROR	1
+-#define YYERRCODE	256
+-
+-
+-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+-   If N is 0, then set CURRENT to the empty location which ends
+-   the previous symbol: RHS[0] (always defined).  */
+-
+-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+-#ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+-    do									\
+-      if (YYID (N))                                                    \
+-	{								\
+-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+-	}								\
+-      else								\
+-	{								\
+-	  (Current).first_line   = (Current).last_line   =		\
+-	    YYRHSLOC (Rhs, 0).last_line;				\
+-	  (Current).first_column = (Current).last_column =		\
+-	    YYRHSLOC (Rhs, 0).last_column;				\
+-	}								\
+-    while (YYID (0))
+-#endif
+-
+-
+-/* YY_LOCATION_PRINT -- Print the location on the stream.
+-   This macro was not mandated originally: define only if we know
+-   we won't break user code: when these are the locations we know.  */
+-
+-#ifndef YY_LOCATION_PRINT
+-# if YYLTYPE_IS_TRIVIAL
+-#  define YY_LOCATION_PRINT(File, Loc)			\
+-     fprintf (File, "%d.%d-%d.%d",			\
+-	      (Loc).first_line, (Loc).first_column,	\
+-	      (Loc).last_line,  (Loc).last_column)
+-# else
+-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+-# endif
+-#endif
+-
+-
+-/* YYLEX -- calling `yylex' with the right arguments.  */
+-
+-#ifdef YYLEX_PARAM
+-# define YYLEX yylex (&yylval, YYLEX_PARAM)
+-#else
+-# define YYLEX yylex (&yylval)
+-#endif
+-
+-/* Enable debugging if requested.  */
+-#if YYDEBUG
+-
+-# ifndef YYFPRINTF
+-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYFPRINTF fprintf
+-# endif
+-
+-# define YYDPRINTF(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    YYFPRINTF Args;				\
+-} while (YYID (0))
+-
+-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+-do {									  \
+-  if (yydebug)								  \
+-    {									  \
+-      YYFPRINTF (stderr, "%s ", Title);					  \
+-      yy_symbol_print (stderr,						  \
+-		  Type, Value); \
+-      YYFPRINTF (stderr, "\n");						  \
+-    }									  \
+-} while (YYID (0))
+-
+-
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
+-
+-/*ARGSUSED*/
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static void
+-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+-#else
+-static void
+-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE const * const yyvaluep;
+-#endif
+-{
+-  if (!yyvaluep)
+-    return;
+-# ifdef YYPRINT
+-  if (yytype < YYNTOKENS)
+-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+-# else
+-  YYUSE (yyoutput);
+-# endif
+-  switch (yytype)
+-    {
+-      default:
+-	break;
+-    }
+-}
+-
+-
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
+-
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static void
+-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+-#else
+-static void
+-yy_symbol_print (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE const * const yyvaluep;
+-#endif
+-{
+-  if (yytype < YYNTOKENS)
+-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+-
+-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+-  YYFPRINTF (yyoutput, ")");
+-}
+-
+-/*------------------------------------------------------------------.
+-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+-| TOP (included).                                                   |
+-`------------------------------------------------------------------*/
+-
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static void
+-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+-#else
+-static void
+-yy_stack_print (yybottom, yytop)
+-    yytype_int16 *yybottom;
+-    yytype_int16 *yytop;
+-#endif
+-{
+-  YYFPRINTF (stderr, "Stack now");
+-  for (; yybottom <= yytop; yybottom++)
+-    {
+-      int yybot = *yybottom;
+-      YYFPRINTF (stderr, " %d", yybot);
+-    }
+-  YYFPRINTF (stderr, "\n");
+-}
+-
+-# define YY_STACK_PRINT(Bottom, Top)				\
+-do {								\
+-  if (yydebug)							\
+-    yy_stack_print ((Bottom), (Top));				\
+-} while (YYID (0))
+-
+-
+-/*------------------------------------------------.
+-| Report that the YYRULE is going to be reduced.  |
+-`------------------------------------------------*/
+-
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static void
+-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+-#else
+-static void
+-yy_reduce_print (yyvsp, yyrule)
+-    YYSTYPE *yyvsp;
+-    int yyrule;
+-#endif
+-{
+-  int yynrhs = yyr2[yyrule];
+-  int yyi;
+-  unsigned long int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+-	     yyrule - 1, yylno);
+-  /* The symbols being reduced.  */
+-  for (yyi = 0; yyi < yynrhs; yyi++)
+-    {
+-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+-		       &(yyvsp[(yyi + 1) - (yynrhs)])
+-		       		       );
+-      YYFPRINTF (stderr, "\n");
+-    }
+-}
+-
+-# define YY_REDUCE_PRINT(Rule)		\
+-do {					\
+-  if (yydebug)				\
+-    yy_reduce_print (yyvsp, Rule); \
+-} while (YYID (0))
+-
+-/* Nonzero means print parse trace.  It is left uninitialized so that
+-   multiple parsers can coexist.  */
+-int yydebug;
+-#else /* !YYDEBUG */
+-# define YYDPRINTF(Args)
+-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+-# define YY_STACK_PRINT(Bottom, Top)
+-# define YY_REDUCE_PRINT(Rule)
+-#endif /* !YYDEBUG */
+-
+-
+-/* YYINITDEPTH -- initial size of the parser's stacks.  */
+-#ifndef	YYINITDEPTH
+-# define YYINITDEPTH 200
+-#endif
+-
+-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+-   if the built-in stack extension method is used).
+-
+-   Do not make this value too large; the results are undefined if
+-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+-   evaluated with infinite-precision integer arithmetic.  */
+-
+-#ifndef YYMAXDEPTH
+-# define YYMAXDEPTH 10000
+-#endif
+-
+-
+-
+-#if YYERROR_VERBOSE
+-
+-# ifndef yystrlen
+-#  if defined __GLIBC__ && defined _STRING_H
+-#   define yystrlen strlen
+-#  else
+-/* Return the length of YYSTR.  */
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static YYSIZE_T
+-yystrlen (const char *yystr)
+-#else
+-static YYSIZE_T
+-yystrlen (yystr)
+-    const char *yystr;
+-#endif
+-{
+-  YYSIZE_T yylen;
+-  for (yylen = 0; yystr[yylen]; yylen++)
+-    continue;
+-  return yylen;
+-}
+-#  endif
+-# endif
+-
+-# ifndef yystpcpy
+-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+-#   define yystpcpy stpcpy
+-#  else
+-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+-   YYDEST.  */
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static char *
+-yystpcpy (char *yydest, const char *yysrc)
+-#else
+-static char *
+-yystpcpy (yydest, yysrc)
+-    char *yydest;
+-    const char *yysrc;
+-#endif
+-{
+-  char *yyd = yydest;
+-  const char *yys = yysrc;
+-
+-  while ((*yyd++ = *yys++) != '\0')
+-    continue;
+-
+-  return yyd - 1;
+-}
+-#  endif
+-# endif
+-
+-# ifndef yytnamerr
+-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+-   quotes and backslashes, so that it's suitable for yyerror.  The
+-   heuristic is that double-quoting is unnecessary unless the string
+-   contains an apostrophe, a comma, or backslash (other than
+-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+-   null, do not copy; instead, return the length of what the result
+-   would have been.  */
+-static YYSIZE_T
+-yytnamerr (char *yyres, const char *yystr)
+-{
+-  if (*yystr == '"')
+-    {
+-      YYSIZE_T yyn = 0;
+-      char const *yyp = yystr;
+-
+-      for (;;)
+-	switch (*++yyp)
+-	  {
+-	  case '\'':
+-	  case ',':
+-	    goto do_not_strip_quotes;
+-
+-	  case '\\':
+-	    if (*++yyp != '\\')
+-	      goto do_not_strip_quotes;
+-	    /* Fall through.  */
+-	  default:
+-	    if (yyres)
+-	      yyres[yyn] = *yyp;
+-	    yyn++;
+-	    break;
+-
+-	  case '"':
+-	    if (yyres)
+-	      yyres[yyn] = '\0';
+-	    return yyn;
+-	  }
+-    do_not_strip_quotes: ;
+-    }
+-
+-  if (! yyres)
+-    return yystrlen (yystr);
+-
+-  return yystpcpy (yyres, yystr) - yyres;
+-}
+-# endif
+-
+-/* Copy into YYRESULT an error message about the unexpected token
+-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+-   including the terminating null byte.  If YYRESULT is null, do not
+-   copy anything; just return the number of bytes that would be
+-   copied.  As a special case, return 0 if an ordinary "syntax error"
+-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+-   size calculation.  */
+-static YYSIZE_T
+-yysyntax_error (char *yyresult, int yystate, int yychar)
+-{
+-  int yyn = yypact[yystate];
+-
+-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+-    return 0;
+-  else
+-    {
+-      int yytype = YYTRANSLATE (yychar);
+-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+-      YYSIZE_T yysize = yysize0;
+-      YYSIZE_T yysize1;
+-      int yysize_overflow = 0;
+-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+-      int yyx;
+-
+-# if 0
+-      /* This is so xgettext sees the translatable formats that are
+-	 constructed on the fly.  */
+-      YY_("syntax error, unexpected %s");
+-      YY_("syntax error, unexpected %s, expecting %s");
+-      YY_("syntax error, unexpected %s, expecting %s or %s");
+-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+-# endif
+-      char *yyfmt;
+-      char const *yyf;
+-      static char const yyunexpected[] = "syntax error, unexpected %s";
+-      static char const yyexpecting[] = ", expecting %s";
+-      static char const yyor[] = " or %s";
+-      char yyformat[sizeof yyunexpected
+-		    + sizeof yyexpecting - 1
+-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+-		       * (sizeof yyor - 1))];
+-      char const *yyprefix = yyexpecting;
+-
+-      /* Start YYX at -YYN if negative to avoid negative indexes in
+-	 YYCHECK.  */
+-      int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-      /* Stay within bounds of both yycheck and yytname.  */
+-      int yychecklim = YYLAST - yyn + 1;
+-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-      int yycount = 1;
+-
+-      yyarg[0] = yytname[yytype];
+-      yyfmt = yystpcpy (yyformat, yyunexpected);
+-
+-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-	  {
+-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+-	      {
+-		yycount = 1;
+-		yysize = yysize0;
+-		yyformat[sizeof yyunexpected - 1] = '\0';
+-		break;
+-	      }
+-	    yyarg[yycount++] = yytname[yyx];
+-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+-	    yysize_overflow |= (yysize1 < yysize);
+-	    yysize = yysize1;
+-	    yyfmt = yystpcpy (yyfmt, yyprefix);
+-	    yyprefix = yyor;
+-	  }
+-
+-      yyf = YY_(yyformat);
+-      yysize1 = yysize + yystrlen (yyf);
+-      yysize_overflow |= (yysize1 < yysize);
+-      yysize = yysize1;
+-
+-      if (yysize_overflow)
+-	return YYSIZE_MAXIMUM;
+-
+-      if (yyresult)
+-	{
+-	  /* Avoid sprintf, as that infringes on the user's name space.
+-	     Don't have undefined behavior even if the translation
+-	     produced a string with the wrong number of "%s"s.  */
+-	  char *yyp = yyresult;
+-	  int yyi = 0;
+-	  while ((*yyp = *yyf) != '\0')
+-	    {
+-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+-		{
+-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
+-		  yyf += 2;
+-		}
+-	      else
+-		{
+-		  yyp++;
+-		  yyf++;
+-		}
+-	    }
+-	}
+-      return yysize;
+-    }
+-}
+-#endif /* YYERROR_VERBOSE */
+-
+-
+-/*-----------------------------------------------.
+-| Release the memory associated to this symbol.  |
+-`-----------------------------------------------*/
+-
+-/*ARGSUSED*/
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-static void
+-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yydestruct (yymsg, yytype, yyvaluep)
+-    const char *yymsg;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
+-{
+-  YYUSE (yyvaluep);
+-
+-  if (!yymsg)
+-    yymsg = "Deleting";
+-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+-
+-  switch (yytype)
+-    {
+-
+-      default:
+-	break;
+-    }
+-}
+-
+-/* Prevent warnings from -Wmissing-prototypes.  */
+-#ifdef YYPARSE_PARAM
+-#if defined __STDC__ || defined __cplusplus
+-int yyparse (void *YYPARSE_PARAM);
+-#else
+-int yyparse ();
+-#endif
+-#else /* ! YYPARSE_PARAM */
+-#if defined __STDC__ || defined __cplusplus
+-int yyparse (void);
+-#else
+-int yyparse ();
+-#endif
+-#endif /* ! YYPARSE_PARAM */
+-
+-
+-
+-
+-
+-/*-------------------------.
+-| yyparse or yypush_parse.  |
+-`-------------------------*/
+-
+-#ifdef YYPARSE_PARAM
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-int
+-yyparse (void *YYPARSE_PARAM)
+-#else
+-int
+-yyparse (YYPARSE_PARAM)
+-    void *YYPARSE_PARAM;
+-#endif
+-#else /* ! YYPARSE_PARAM */
+-#if (defined __STDC__ || defined __C99__FUNC__ \
+-     || defined __cplusplus || defined _MSC_VER)
+-int
+-yyparse (void)
+-#else
+-int
+-yyparse ()
+-
+-#endif
+-#endif
+-{
+-/* The lookahead symbol.  */
+-int yychar;
+-
+-/* The semantic value of the lookahead symbol.  */
+-YYSTYPE yylval;
+-
+-    /* Number of syntax errors so far.  */
+-    int yynerrs;
+-
+-    int yystate;
+-    /* Number of tokens to shift before error messages enabled.  */
+-    int yyerrstatus;
+-
+-    /* The stacks and their tools:
+-       `yyss': related to states.
+-       `yyvs': related to semantic values.
+-
+-       Refer to the stacks thru separate pointers, to allow yyoverflow
+-       to reallocate them elsewhere.  */
+-
+-    /* The state stack.  */
+-    yytype_int16 yyssa[YYINITDEPTH];
+-    yytype_int16 *yyss;
+-    yytype_int16 *yyssp;
+-
+-    /* The semantic value stack.  */
+-    YYSTYPE yyvsa[YYINITDEPTH];
+-    YYSTYPE *yyvs;
+-    YYSTYPE *yyvsp;
+-
+-    YYSIZE_T yystacksize;
+-
+-  int yyn;
+-  int yyresult;
+-  /* Lookahead token as an internal (translated) token number.  */
+-  int yytoken;
+-  /* The variables used to return semantic value and location from the
+-     action routines.  */
+-  YYSTYPE yyval;
+-
+-#if YYERROR_VERBOSE
+-  /* Buffer for error messages, and its allocated size.  */
+-  char yymsgbuf[128];
+-  char *yymsg = yymsgbuf;
+-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+-#endif
+-
+-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+-
+-  /* The number of symbols on the RHS of the reduced rule.
+-     Keep to zero when no symbol should be popped.  */
+-  int yylen = 0;
+-
+-  yytoken = 0;
+-  yyss = yyssa;
+-  yyvs = yyvsa;
+-  yystacksize = YYINITDEPTH;
+-
+-  YYDPRINTF ((stderr, "Starting parse\n"));
+-
+-  yystate = 0;
+-  yyerrstatus = 0;
+-  yynerrs = 0;
+-  yychar = YYEMPTY; /* Cause a token to be read.  */
+-
+-  /* Initialize stack pointers.
+-     Waste one element of value and location stack
+-     so that they stay on the same level as the state stack.
+-     The wasted elements are never initialized.  */
+-  yyssp = yyss;
+-  yyvsp = yyvs;
+-
+-  goto yysetstate;
+-
+-/*------------------------------------------------------------.
+-| yynewstate -- Push a new state, which is found in yystate.  |
+-`------------------------------------------------------------*/
+- yynewstate:
+-  /* In all cases, when you get here, the value and location stacks
+-     have just been pushed.  So pushing a state here evens the stacks.  */
+-  yyssp++;
+-
+- yysetstate:
+-  *yyssp = yystate;
+-
+-  if (yyss + yystacksize - 1 <= yyssp)
+-    {
+-      /* Get the current used size of the three stacks, in elements.  */
+-      YYSIZE_T yysize = yyssp - yyss + 1;
+-
+-#ifdef yyoverflow
+-      {
+-	/* Give user a chance to reallocate the stack.  Use copies of
+-	   these so that the &'s don't force the real ones into
+-	   memory.  */
+-	YYSTYPE *yyvs1 = yyvs;
+-	yytype_int16 *yyss1 = yyss;
+-
+-	/* Each stack pointer address is followed by the size of the
+-	   data in use in that stack, in bytes.  This used to be a
+-	   conditional around just the two extra args, but that might
+-	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow (YY_("memory exhausted"),
+-		    &yyss1, yysize * sizeof (*yyssp),
+-		    &yyvs1, yysize * sizeof (*yyvsp),
+-		    &yystacksize);
+-
+-	yyss = yyss1;
+-	yyvs = yyvs1;
+-      }
+-#else /* no yyoverflow */
+-# ifndef YYSTACK_RELOCATE
+-      goto yyexhaustedlab;
+-# else
+-      /* Extend the stack our own way.  */
+-      if (YYMAXDEPTH <= yystacksize)
+-	goto yyexhaustedlab;
+-      yystacksize *= 2;
+-      if (YYMAXDEPTH < yystacksize)
+-	yystacksize = YYMAXDEPTH;
+-
+-      {
+-	yytype_int16 *yyss1 = yyss;
+-	union yyalloc *yyptr =
+-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+-	if (! yyptr)
+-	  goto yyexhaustedlab;
+-	YYSTACK_RELOCATE (yyss_alloc, yyss);
+-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+-#  undef YYSTACK_RELOCATE
+-	if (yyss1 != yyssa)
+-	  YYSTACK_FREE (yyss1);
+-      }
+-# endif
+-#endif /* no yyoverflow */
+-
+-      yyssp = yyss + yysize - 1;
+-      yyvsp = yyvs + yysize - 1;
+-
+-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+-		  (unsigned long int) yystacksize));
+-
+-      if (yyss + yystacksize - 1 <= yyssp)
+-	YYABORT;
+-    }
+-
+-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+-
+-  if (yystate == YYFINAL)
+-    YYACCEPT;
+-
+-  goto yybackup;
+-
+-/*-----------.
+-| yybackup.  |
+-`-----------*/
+-yybackup:
+-
+-  /* Do appropriate processing given the current state.  Read a
+-     lookahead token if we need one and don't already have one.  */
+-
+-  /* First try to decide what to do without reference to lookahead token.  */
+-  yyn = yypact[yystate];
+-  if (yyn == YYPACT_NINF)
+-    goto yydefault;
+-
+-  /* Not known => get a lookahead token if don't already have one.  */
+-
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+-  if (yychar == YYEMPTY)
+-    {
+-      YYDPRINTF ((stderr, "Reading a token: "));
+-      yychar = YYLEX;
+-    }
+-
+-  if (yychar <= YYEOF)
+-    {
+-      yychar = yytoken = YYEOF;
+-      YYDPRINTF ((stderr, "Now at end of input.\n"));
+-    }
+-  else
+-    {
+-      yytoken = YYTRANSLATE (yychar);
+-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+-    }
+-
+-  /* If the proper action on seeing token YYTOKEN is to reduce or to
+-     detect an error, take that action.  */
+-  yyn += yytoken;
+-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+-    goto yydefault;
+-  yyn = yytable[yyn];
+-  if (yyn <= 0)
+-    {
+-      if (yyn == 0 || yyn == YYTABLE_NINF)
+-	goto yyerrlab;
+-      yyn = -yyn;
+-      goto yyreduce;
+-    }
+-
+-  /* Count tokens shifted since error; after three, turn off error
+-     status.  */
+-  if (yyerrstatus)
+-    yyerrstatus--;
+-
+-  /* Shift the lookahead token.  */
+-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+-
+-  /* Discard the shifted token.  */
+-  yychar = YYEMPTY;
+-
+-  yystate = yyn;
+-  *++yyvsp = yylval;
+-
+-  goto yynewstate;
+-
+-
+-/*-----------------------------------------------------------.
+-| yydefault -- do the default action for the current state.  |
+-`-----------------------------------------------------------*/
+-yydefault:
+-  yyn = yydefact[yystate];
+-  if (yyn == 0)
+-    goto yyerrlab;
+-  goto yyreduce;
+-
+-
+-/*-----------------------------.
+-| yyreduce -- Do a reduction.  |
+-`-----------------------------*/
+-yyreduce:
+-  /* yyn is the number of a rule to reduce with.  */
+-  yylen = yyr2[yyn];
+-
+-  /* If YYLEN is nonzero, implement the default value of the action:
+-     `$$ = $1'.
+-
+-     Otherwise, the following line sets YYVAL to garbage.
+-     This behavior is undocumented and Bison
+-     users should not rely upon it.  Assigning to YYVAL
+-     unconditionally makes the parser a bit smaller, and it avoids a
+-     GCC warning that YYVAL may be used uninitialized.  */
+-  yyval = yyvsp[1-yylen];
+-
+-
+-  YY_REDUCE_PRINT (yyn);
+-  switch (yyn)
+-    {
+-        case 2:
+-
+-/* Line 1455 of yacc.c  */
+-#line 155 "plural.y"
+-    {
+-	    if ((yyvsp[(1) - (1)].exp) == NULL)
+-	      YYABORT;
+-	    ((struct parse_args *) arg)->res = (yyvsp[(1) - (1)].exp);
+-	  }
+-    break;
+-
+-  case 3:
+-
+-/* Line 1455 of yacc.c  */
+-#line 163 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_3 (qmop, (yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].exp), (yyvsp[(5) - (5)].exp));
+-	  }
+-    break;
+-
+-  case 4:
+-
+-/* Line 1455 of yacc.c  */
+-#line 167 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_2 (lor, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp));
+-	  }
+-    break;
+-
+-  case 5:
+-
+-/* Line 1455 of yacc.c  */
+-#line 171 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_2 (land, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp));
+-	  }
+-    break;
+-
+-  case 6:
+-
+-/* Line 1455 of yacc.c  */
+-#line 175 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp));
+-	  }
+-    break;
+-
+-  case 7:
+-
+-/* Line 1455 of yacc.c  */
+-#line 179 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp));
+-	  }
+-    break;
+-
+-  case 8:
+-
+-/* Line 1455 of yacc.c  */
+-#line 183 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp));
+-	  }
+-    break;
+-
+-  case 9:
+-
+-/* Line 1455 of yacc.c  */
+-#line 187 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp));
+-	  }
+-    break;
+-
+-  case 10:
+-
+-/* Line 1455 of yacc.c  */
+-#line 191 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_1 (lnot, (yyvsp[(2) - (2)].exp));
+-	  }
+-    break;
+-
+-  case 11:
+-
+-/* Line 1455 of yacc.c  */
+-#line 195 "plural.y"
+-    {
+-	    (yyval.exp) = new_exp_0 (var);
+-	  }
+-    break;
+-
+-  case 12:
+-
+-/* Line 1455 of yacc.c  */
+-#line 199 "plural.y"
+-    {
+-	    if (((yyval.exp) = new_exp_0 (num)) != NULL)
+-	      (yyval.exp)->val.num = (yyvsp[(1) - (1)].num);
+-	  }
+-    break;
+-
+-  case 13:
+-
+-/* Line 1455 of yacc.c  */
+-#line 204 "plural.y"
+-    {
+-	    (yyval.exp) = (yyvsp[(2) - (3)].exp);
+-	  }
+-    break;
+-
+-
+-
+-/* Line 1455 of yacc.c  */
+-#line 1592 "plural.c"
+-      default: break;
+-    }
+-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+-
+-  YYPOPSTACK (yylen);
+-  yylen = 0;
+-  YY_STACK_PRINT (yyss, yyssp);
+-
+-  *++yyvsp = yyval;
+-
+-  /* Now `shift' the result of the reduction.  Determine what state
+-     that goes to, based on the state we popped back to and the rule
+-     number reduced by.  */
+-
+-  yyn = yyr1[yyn];
+-
+-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+-    yystate = yytable[yystate];
+-  else
+-    yystate = yydefgoto[yyn - YYNTOKENS];
+-
+-  goto yynewstate;
+-
+-
+-/*------------------------------------.
+-| yyerrlab -- here on detecting error |
+-`------------------------------------*/
+-yyerrlab:
+-  /* If not already recovering from an error, report this error.  */
+-  if (!yyerrstatus)
+-    {
+-      ++yynerrs;
+-#if ! YYERROR_VERBOSE
+-      yyerror (YY_("syntax error"));
+-#else
+-      {
+-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+-	  {
+-	    YYSIZE_T yyalloc = 2 * yysize;
+-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
+-	    if (yymsg != yymsgbuf)
+-	      YYSTACK_FREE (yymsg);
+-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+-	    if (yymsg)
+-	      yymsg_alloc = yyalloc;
+-	    else
+-	      {
+-		yymsg = yymsgbuf;
+-		yymsg_alloc = sizeof yymsgbuf;
+-	      }
+-	  }
+-
+-	if (0 < yysize && yysize <= yymsg_alloc)
+-	  {
+-	    (void) yysyntax_error (yymsg, yystate, yychar);
+-	    yyerror (yymsg);
+-	  }
+-	else
+-	  {
+-	    yyerror (YY_("syntax error"));
+-	    if (yysize != 0)
+-	      goto yyexhaustedlab;
+-	  }
+-      }
+-#endif
+-    }
+-
+-
+-
+-  if (yyerrstatus == 3)
+-    {
+-      /* If just tried and failed to reuse lookahead token after an
+-	 error, discard it.  */
+-
+-      if (yychar <= YYEOF)
+-	{
+-	  /* Return failure if at end of input.  */
+-	  if (yychar == YYEOF)
+-	    YYABORT;
+-	}
+-      else
+-	{
+-	  yydestruct ("Error: discarding",
+-		      yytoken, &yylval);
+-	  yychar = YYEMPTY;
+-	}
+-    }
+-
+-  /* Else will try to reuse lookahead token after shifting the error
+-     token.  */
+-  goto yyerrlab1;
+-
+-
+-/*---------------------------------------------------.
+-| yyerrorlab -- error raised explicitly by YYERROR.  |
+-`---------------------------------------------------*/
+-yyerrorlab:
+-
+-  /* Pacify compilers like GCC when the user code never invokes
+-     YYERROR and the label yyerrorlab therefore never appears in user
+-     code.  */
+-  if (/*CONSTCOND*/ 0)
+-     goto yyerrorlab;
+-
+-  /* Do not reclaim the symbols of the rule which action triggered
+-     this YYERROR.  */
+-  YYPOPSTACK (yylen);
+-  yylen = 0;
+-  YY_STACK_PRINT (yyss, yyssp);
+-  yystate = *yyssp;
+-  goto yyerrlab1;
+-
+-
+-/*-------------------------------------------------------------.
+-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+-`-------------------------------------------------------------*/
+-yyerrlab1:
+-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+-
+-  for (;;)
+-    {
+-      yyn = yypact[yystate];
+-      if (yyn != YYPACT_NINF)
+-	{
+-	  yyn += YYTERROR;
+-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+-	    {
+-	      yyn = yytable[yyn];
+-	      if (0 < yyn)
+-		break;
+-	    }
+-	}
+-
+-      /* Pop the current state because it cannot handle the error token.  */
+-      if (yyssp == yyss)
+-	YYABORT;
+-
+-
+-      yydestruct ("Error: popping",
+-		  yystos[yystate], yyvsp);
+-      YYPOPSTACK (1);
+-      yystate = *yyssp;
+-      YY_STACK_PRINT (yyss, yyssp);
+-    }
+-
+-  *++yyvsp = yylval;
+-
+-
+-  /* Shift the error token.  */
+-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+-
+-  yystate = yyn;
+-  goto yynewstate;
+-
+-
+-/*-------------------------------------.
+-| yyacceptlab -- YYACCEPT comes here.  |
+-`-------------------------------------*/
+-yyacceptlab:
+-  yyresult = 0;
+-  goto yyreturn;
+-
+-/*-----------------------------------.
+-| yyabortlab -- YYABORT comes here.  |
+-`-----------------------------------*/
+-yyabortlab:
+-  yyresult = 1;
+-  goto yyreturn;
+-
+-#if !defined(yyoverflow) || YYERROR_VERBOSE
+-/*-------------------------------------------------.
+-| yyexhaustedlab -- memory exhaustion comes here.  |
+-`-------------------------------------------------*/
+-yyexhaustedlab:
+-  yyerror (YY_("memory exhausted"));
+-  yyresult = 2;
+-  /* Fall through.  */
+-#endif
+-
+-yyreturn:
+-  if (yychar != YYEMPTY)
+-     yydestruct ("Cleanup: discarding lookahead",
+-		 yytoken, &yylval);
+-  /* Do not reclaim the symbols of the rule which action triggered
+-     this YYABORT or YYACCEPT.  */
+-  YYPOPSTACK (yylen);
+-  YY_STACK_PRINT (yyss, yyssp);
+-  while (yyssp != yyss)
+-    {
+-      yydestruct ("Cleanup: popping",
+-		  yystos[*yyssp], yyvsp);
+-      YYPOPSTACK (1);
+-    }
+-#ifndef yyoverflow
+-  if (yyss != yyssa)
+-    YYSTACK_FREE (yyss);
+-#endif
+-#if YYERROR_VERBOSE
+-  if (yymsg != yymsgbuf)
+-    YYSTACK_FREE (yymsg);
+-#endif
+-  /* Make sure YYID is used.  */
+-  return YYID (yyresult);
+-}
+-
+-
+-
+-/* Line 1675 of yacc.c  */
+-#line 209 "plural.y"
+-
+-
+-void
+-internal_function
+-FREE_EXPRESSION (struct expression *exp)
+-{
+-  if (exp == NULL)
+-    return;
+-
+-  /* Handle the recursive case.  */
+-  switch (exp->nargs)
+-    {
+-    case 3:
+-      FREE_EXPRESSION (exp->val.args[2]);
+-      /* FALLTHROUGH */
+-    case 2:
+-      FREE_EXPRESSION (exp->val.args[1]);
+-      /* FALLTHROUGH */
+-    case 1:
+-      FREE_EXPRESSION (exp->val.args[0]);
+-      /* FALLTHROUGH */
+-    default:
+-      break;
+-    }
+-
+-  free (exp);
+-}
+-
+-
+-static int
+-yylex (YYSTYPE *lval, const char **pexp)
+-{
+-  const char *exp = *pexp;
+-  int result;
+-
+-  while (1)
+-    {
+-      if (exp[0] == '\0')
+-	{
+-	  *pexp = exp;
+-	  return YYEOF;
+-	}
+-
+-      if (exp[0] != ' ' && exp[0] != '\t')
+-	break;
+-
+-      ++exp;
+-    }
+-
+-  result = *exp++;
+-  switch (result)
+-    {
+-    case '0': case '1': case '2': case '3': case '4':
+-    case '5': case '6': case '7': case '8': case '9':
+-      {
+-	unsigned long int n = result - '0';
+-	while (exp[0] >= '0' && exp[0] <= '9')
+-	  {
+-	    n *= 10;
+-	    n += exp[0] - '0';
+-	    ++exp;
+-	  }
+-	lval->num = n;
+-	result = NUMBER;
+-      }
+-      break;
+-
+-    case '=':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = equal;
+-	  result = EQUOP2;
+-	}
+-      else
+-	result = YYERRCODE;
+-      break;
+-
+-    case '!':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = not_equal;
+-	  result = EQUOP2;
+-	}
+-      break;
+-
+-    case '&':
+-    case '|':
+-      if (exp[0] == result)
+-	++exp;
+-      else
+-	result = YYERRCODE;
+-      break;
+-
+-    case '<':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = less_or_equal;
+-	}
+-      else
+-	lval->op = less_than;
+-      result = CMPOP2;
+-      break;
+-
+-    case '>':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = greater_or_equal;
+-	}
+-      else
+-	lval->op = greater_than;
+-      result = CMPOP2;
+-      break;
+-
+-    case '*':
+-      lval->op = mult;
+-      result = MULOP2;
+-      break;
+-
+-    case '/':
+-      lval->op = divide;
+-      result = MULOP2;
+-      break;
+-
+-    case '%':
+-      lval->op = module;
+-      result = MULOP2;
+-      break;
+-
+-    case '+':
+-      lval->op = plus;
+-      result = ADDOP2;
+-      break;
+-
+-    case '-':
+-      lval->op = minus;
+-      result = ADDOP2;
+-      break;
+-
+-    case 'n':
+-    case '?':
+-    case ':':
+-    case '(':
+-    case ')':
+-      /* Nothing, just return the character.  */
+-      break;
+-
+-    case ';':
+-    case '\n':
+-    case '\0':
+-      /* Be safe and let the user call this function again.  */
+-      --exp;
+-      result = YYEOF;
+-      break;
+-
+-    default:
+-      result = YYERRCODE;
+-#if YYDEBUG != 0
+-      --exp;
+-#endif
+-      break;
+-    }
+-
+-  *pexp = exp;
+-
+-  return result;
+-}
+-
+-
+-static void
+-yyerror (const char *str)
+-{
+-  /* Do nothing.  We don't print error messages here.  */
+-}
+-
+--- a/intl/plural.y
++++ /dev/null
+@@ -1,385 +0,0 @@
+-%{
+-/* Expression parsing for plural form selection.
+-   Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc.
+-   Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* For bison < 2.0, the bison generated parser uses alloca.  AIX 3 forces us
+-   to put this declaration at the beginning of the file.  The declaration in
+-   bison's skeleton file comes too late.  This must come before <config.h>
+-   because <config.h> may include arbitrary system headers.
+-   This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0.  */
+-#if defined _AIX && !defined __GNUC__
+- #pragma alloca
+-#endif
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stddef.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include "plural-exp.h"
+-
+-/* The main function generated by the parser is called __gettextparse,
+-   but we want it to be called PLURAL_PARSE.  */
+-#ifndef _LIBC
+-# define __gettextparse PLURAL_PARSE
+-#endif
+-
+-#define YYLEX_PARAM	&((struct parse_args *) arg)->cp
+-#define YYPARSE_PARAM	arg
+-%}
+-%pure_parser
+-%expect 7
+-
+-%union {
+-  unsigned long int num;
+-  enum expression_operator op;
+-  struct expression *exp;
+-}
+-
+-%{
+-/* Prototypes for local functions.  */
+-static int yylex (YYSTYPE *lval, const char **pexp);
+-static void yyerror (const char *str);
+-
+-/* Allocation of expressions.  */
+-
+-static struct expression *
+-new_exp (int nargs, enum expression_operator op,
+-	 struct expression * const *args)
+-{
+-  int i;
+-  struct expression *newp;
+-
+-  /* If any of the argument could not be malloc'ed, just return NULL.  */
+-  for (i = nargs - 1; i >= 0; i--)
+-    if (args[i] == NULL)
+-      goto fail;
+-
+-  /* Allocate a new expression.  */
+-  newp = (struct expression *) malloc (sizeof (*newp));
+-  if (newp != NULL)
+-    {
+-      newp->nargs = nargs;
+-      newp->operation = op;
+-      for (i = nargs - 1; i >= 0; i--)
+-	newp->val.args[i] = args[i];
+-      return newp;
+-    }
+-
+- fail:
+-  for (i = nargs - 1; i >= 0; i--)
+-    FREE_EXPRESSION (args[i]);
+-
+-  return NULL;
+-}
+-
+-static inline struct expression *
+-new_exp_0 (enum expression_operator op)
+-{
+-  return new_exp (0, op, NULL);
+-}
+-
+-static inline struct expression *
+-new_exp_1 (enum expression_operator op, struct expression *right)
+-{
+-  struct expression *args[1];
+-
+-  args[0] = right;
+-  return new_exp (1, op, args);
+-}
+-
+-static struct expression *
+-new_exp_2 (enum expression_operator op, struct expression *left,
+-	   struct expression *right)
+-{
+-  struct expression *args[2];
+-
+-  args[0] = left;
+-  args[1] = right;
+-  return new_exp (2, op, args);
+-}
+-
+-static inline struct expression *
+-new_exp_3 (enum expression_operator op, struct expression *bexp,
+-	   struct expression *tbranch, struct expression *fbranch)
+-{
+-  struct expression *args[3];
+-
+-  args[0] = bexp;
+-  args[1] = tbranch;
+-  args[2] = fbranch;
+-  return new_exp (3, op, args);
+-}
+-
+-%}
+-
+-/* This declares that all operators have the same associativity and the
+-   precedence order as in C.  See [Harbison, Steele: C, A Reference Manual].
+-   There is no unary minus and no bitwise operators.
+-   Operators with the same syntactic behaviour have been merged into a single
+-   token, to save space in the array generated by bison.  */
+-%right '?'		/*   ?		*/
+-%left '|'		/*   ||		*/
+-%left '&'		/*   &&		*/
+-%left EQUOP2		/*   == !=	*/
+-%left CMPOP2		/*   < > <= >=	*/
+-%left ADDOP2		/*   + -	*/
+-%left MULOP2		/*   * / %	*/
+-%right '!'		/*   !		*/
+-
+-%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
+-%token <num> NUMBER
+-%type <exp> exp
+-
+-%%
+-
+-start:	  exp
+-	  {
+-	    if ($1 == NULL)
+-	      YYABORT;
+-	    ((struct parse_args *) arg)->res = $1;
+-	  }
+-	;
+-
+-exp:	  exp '?' exp ':' exp
+-	  {
+-	    $$ = new_exp_3 (qmop, $1, $3, $5);
+-	  }
+-	| exp '|' exp
+-	  {
+-	    $$ = new_exp_2 (lor, $1, $3);
+-	  }
+-	| exp '&' exp
+-	  {
+-	    $$ = new_exp_2 (land, $1, $3);
+-	  }
+-	| exp EQUOP2 exp
+-	  {
+-	    $$ = new_exp_2 ($2, $1, $3);
+-	  }
+-	| exp CMPOP2 exp
+-	  {
+-	    $$ = new_exp_2 ($2, $1, $3);
+-	  }
+-	| exp ADDOP2 exp
+-	  {
+-	    $$ = new_exp_2 ($2, $1, $3);
+-	  }
+-	| exp MULOP2 exp
+-	  {
+-	    $$ = new_exp_2 ($2, $1, $3);
+-	  }
+-	| '!' exp
+-	  {
+-	    $$ = new_exp_1 (lnot, $2);
+-	  }
+-	| 'n'
+-	  {
+-	    $$ = new_exp_0 (var);
+-	  }
+-	| NUMBER
+-	  {
+-	    if (($$ = new_exp_0 (num)) != NULL)
+-	      $$->val.num = $1;
+-	  }
+-	| '(' exp ')'
+-	  {
+-	    $$ = $2;
+-	  }
+-	;
+-
+-%%
+-
+-void
+-internal_function
+-FREE_EXPRESSION (struct expression *exp)
+-{
+-  if (exp == NULL)
+-    return;
+-
+-  /* Handle the recursive case.  */
+-  switch (exp->nargs)
+-    {
+-    case 3:
+-      FREE_EXPRESSION (exp->val.args[2]);
+-      /* FALLTHROUGH */
+-    case 2:
+-      FREE_EXPRESSION (exp->val.args[1]);
+-      /* FALLTHROUGH */
+-    case 1:
+-      FREE_EXPRESSION (exp->val.args[0]);
+-      /* FALLTHROUGH */
+-    default:
+-      break;
+-    }
+-
+-  free (exp);
+-}
+-
+-
+-static int
+-yylex (YYSTYPE *lval, const char **pexp)
+-{
+-  const char *exp = *pexp;
+-  int result;
+-
+-  while (1)
+-    {
+-      if (exp[0] == '\0')
+-	{
+-	  *pexp = exp;
+-	  return YYEOF;
+-	}
+-
+-      if (exp[0] != ' ' && exp[0] != '\t')
+-	break;
+-
+-      ++exp;
+-    }
+-
+-  result = *exp++;
+-  switch (result)
+-    {
+-    case '0': case '1': case '2': case '3': case '4':
+-    case '5': case '6': case '7': case '8': case '9':
+-      {
+-	unsigned long int n = result - '0';
+-	while (exp[0] >= '0' && exp[0] <= '9')
+-	  {
+-	    n *= 10;
+-	    n += exp[0] - '0';
+-	    ++exp;
+-	  }
+-	lval->num = n;
+-	result = NUMBER;
+-      }
+-      break;
+-
+-    case '=':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = equal;
+-	  result = EQUOP2;
+-	}
+-      else
+-	result = YYERRCODE;
+-      break;
+-
+-    case '!':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = not_equal;
+-	  result = EQUOP2;
+-	}
+-      break;
+-
+-    case '&':
+-    case '|':
+-      if (exp[0] == result)
+-	++exp;
+-      else
+-	result = YYERRCODE;
+-      break;
+-
+-    case '<':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = less_or_equal;
+-	}
+-      else
+-	lval->op = less_than;
+-      result = CMPOP2;
+-      break;
+-
+-    case '>':
+-      if (exp[0] == '=')
+-	{
+-	  ++exp;
+-	  lval->op = greater_or_equal;
+-	}
+-      else
+-	lval->op = greater_than;
+-      result = CMPOP2;
+-      break;
+-
+-    case '*':
+-      lval->op = mult;
+-      result = MULOP2;
+-      break;
+-
+-    case '/':
+-      lval->op = divide;
+-      result = MULOP2;
+-      break;
+-
+-    case '%':
+-      lval->op = module;
+-      result = MULOP2;
+-      break;
+-
+-    case '+':
+-      lval->op = plus;
+-      result = ADDOP2;
+-      break;
+-
+-    case '-':
+-      lval->op = minus;
+-      result = ADDOP2;
+-      break;
+-
+-    case 'n':
+-    case '?':
+-    case ':':
+-    case '(':
+-    case ')':
+-      /* Nothing, just return the character.  */
+-      break;
+-
+-    case ';':
+-    case '\n':
+-    case '\0':
+-      /* Be safe and let the user call this function again.  */
+-      --exp;
+-      result = YYEOF;
+-      break;
+-
+-    default:
+-      result = YYERRCODE;
+-#if YYDEBUG != 0
+-      --exp;
+-#endif
+-      break;
+-    }
+-
+-  *pexp = exp;
+-
+-  return result;
+-}
+-
+-
+-static void
+-yyerror (const char *str)
+-{
+-  /* Do nothing.  We don't print error messages here.  */
+-}
+--- a/intl/printf-args.c
++++ /dev/null
+@@ -1,188 +0,0 @@
+-/* Decomposed printf argument list.
+-   Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* This file can be parametrized with the following macros:
+-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
+-     PRINTF_FETCHARGS   Name of the function to be defined.
+-     STATIC             Set to 'static' to declare the function static.  */
+-
+-#ifndef PRINTF_FETCHARGS
+-# include <config.h>
+-#endif
+-
+-/* Specification.  */
+-#ifndef PRINTF_FETCHARGS
+-# include "printf-args.h"
+-#endif
+-
+-#ifdef STATIC
+-STATIC
+-#endif
+-int
+-PRINTF_FETCHARGS (va_list args, arguments *a)
+-{
+-  size_t i;
+-  argument *ap;
+-
+-  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
+-    switch (ap->type)
+-      {
+-      case TYPE_SCHAR:
+-	ap->a.a_schar = va_arg (args, /*signed char*/ int);
+-	break;
+-      case TYPE_UCHAR:
+-	ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
+-	break;
+-      case TYPE_SHORT:
+-	ap->a.a_short = va_arg (args, /*short*/ int);
+-	break;
+-      case TYPE_USHORT:
+-	ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
+-	break;
+-      case TYPE_INT:
+-	ap->a.a_int = va_arg (args, int);
+-	break;
+-      case TYPE_UINT:
+-	ap->a.a_uint = va_arg (args, unsigned int);
+-	break;
+-      case TYPE_LONGINT:
+-	ap->a.a_longint = va_arg (args, long int);
+-	break;
+-      case TYPE_ULONGINT:
+-	ap->a.a_ulongint = va_arg (args, unsigned long int);
+-	break;
+-#if HAVE_LONG_LONG_INT
+-      case TYPE_LONGLONGINT:
+-	ap->a.a_longlongint = va_arg (args, long long int);
+-	break;
+-      case TYPE_ULONGLONGINT:
+-	ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
+-	break;
+-#endif
+-      case TYPE_DOUBLE:
+-	ap->a.a_double = va_arg (args, double);
+-	break;
+-      case TYPE_LONGDOUBLE:
+-	ap->a.a_longdouble = va_arg (args, long double);
+-	break;
+-      case TYPE_CHAR:
+-	ap->a.a_char = va_arg (args, int);
+-	break;
+-#if HAVE_WINT_T
+-      case TYPE_WIDE_CHAR:
+-	/* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
+-	   default argument promotions", this is not the case in mingw32,
+-	   where wint_t is 'unsigned short'.  */
+-	ap->a.a_wide_char =
+-	  (sizeof (wint_t) < sizeof (int)
+-	   ? va_arg (args, int)
+-	   : va_arg (args, wint_t));
+-	break;
+-#endif
+-      case TYPE_STRING:
+-	ap->a.a_string = va_arg (args, const char *);
+-	/* A null pointer is an invalid argument for "%s", but in practice
+-	   it occurs quite frequently in printf statements that produce
+-	   debug output.  Use a fallback in this case.  */
+-	if (ap->a.a_string == NULL)
+-	  ap->a.a_string = "(NULL)";
+-	break;
+-#if HAVE_WCHAR_T
+-      case TYPE_WIDE_STRING:
+-	ap->a.a_wide_string = va_arg (args, const wchar_t *);
+-	/* A null pointer is an invalid argument for "%ls", but in practice
+-	   it occurs quite frequently in printf statements that produce
+-	   debug output.  Use a fallback in this case.  */
+-	if (ap->a.a_wide_string == NULL)
+-	  {
+-	    static const wchar_t wide_null_string[] =
+-	      {
+-		(wchar_t)'(',
+-		(wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
+-		(wchar_t)')',
+-		(wchar_t)0
+-	      };
+-	    ap->a.a_wide_string = wide_null_string;
+-	  }
+-	break;
+-#endif
+-      case TYPE_POINTER:
+-	ap->a.a_pointer = va_arg (args, void *);
+-	break;
+-      case TYPE_COUNT_SCHAR_POINTER:
+-	ap->a.a_count_schar_pointer = va_arg (args, signed char *);
+-	break;
+-      case TYPE_COUNT_SHORT_POINTER:
+-	ap->a.a_count_short_pointer = va_arg (args, short *);
+-	break;
+-      case TYPE_COUNT_INT_POINTER:
+-	ap->a.a_count_int_pointer = va_arg (args, int *);
+-	break;
+-      case TYPE_COUNT_LONGINT_POINTER:
+-	ap->a.a_count_longint_pointer = va_arg (args, long int *);
+-	break;
+-#if HAVE_LONG_LONG_INT
+-      case TYPE_COUNT_LONGLONGINT_POINTER:
+-	ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
+-	break;
+-#endif
+-#if ENABLE_UNISTDIO
+-      /* The unistdio extensions.  */
+-      case TYPE_U8_STRING:
+-	ap->a.a_u8_string = va_arg (args, const uint8_t *);
+-	/* A null pointer is an invalid argument for "%U", but in practice
+-	   it occurs quite frequently in printf statements that produce
+-	   debug output.  Use a fallback in this case.  */
+-	if (ap->a.a_u8_string == NULL)
+-	  {
+-	    static const uint8_t u8_null_string[] =
+-	      { '(', 'N', 'U', 'L', 'L', ')', 0 };
+-	    ap->a.a_u8_string = u8_null_string;
+-	  }
+-	break;
+-      case TYPE_U16_STRING:
+-	ap->a.a_u16_string = va_arg (args, const uint16_t *);
+-	/* A null pointer is an invalid argument for "%lU", but in practice
+-	   it occurs quite frequently in printf statements that produce
+-	   debug output.  Use a fallback in this case.  */
+-	if (ap->a.a_u16_string == NULL)
+-	  {
+-	    static const uint16_t u16_null_string[] =
+-	      { '(', 'N', 'U', 'L', 'L', ')', 0 };
+-	    ap->a.a_u16_string = u16_null_string;
+-	  }
+-	break;
+-      case TYPE_U32_STRING:
+-	ap->a.a_u32_string = va_arg (args, const uint32_t *);
+-	/* A null pointer is an invalid argument for "%llU", but in practice
+-	   it occurs quite frequently in printf statements that produce
+-	   debug output.  Use a fallback in this case.  */
+-	if (ap->a.a_u32_string == NULL)
+-	  {
+-	    static const uint32_t u32_null_string[] =
+-	      { '(', 'N', 'U', 'L', 'L', ')', 0 };
+-	    ap->a.a_u32_string = u32_null_string;
+-	  }
+-	break;
+-#endif
+-      default:
+-	/* Unknown type.  */
+-	return -1;
+-      }
+-  return 0;
+-}
+--- a/intl/printf-args.h
++++ /dev/null
+@@ -1,155 +0,0 @@
+-/* Decomposed printf argument list.
+-   Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _PRINTF_ARGS_H
+-#define _PRINTF_ARGS_H
+-
+-/* This file can be parametrized with the following macros:
+-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.
+-     PRINTF_FETCHARGS   Name of the function to be declared.
+-     STATIC             Set to 'static' to declare the function static.  */
+-
+-/* Default parameters.  */
+-#ifndef PRINTF_FETCHARGS
+-# define PRINTF_FETCHARGS printf_fetchargs
+-#endif
+-
+-/* Get size_t.  */
+-#include <stddef.h>
+-
+-/* Get wchar_t.  */
+-#if HAVE_WCHAR_T
+-# include <stddef.h>
+-#endif
+-
+-/* Get wint_t.  */
+-#if HAVE_WINT_T
+-# include <wchar.h>
+-#endif
+-
+-/* Get va_list.  */
+-#include <stdarg.h>
+-
+-
+-/* Argument types */
+-typedef enum
+-{
+-  TYPE_NONE,
+-  TYPE_SCHAR,
+-  TYPE_UCHAR,
+-  TYPE_SHORT,
+-  TYPE_USHORT,
+-  TYPE_INT,
+-  TYPE_UINT,
+-  TYPE_LONGINT,
+-  TYPE_ULONGINT,
+-#if HAVE_LONG_LONG_INT
+-  TYPE_LONGLONGINT,
+-  TYPE_ULONGLONGINT,
+-#endif
+-  TYPE_DOUBLE,
+-  TYPE_LONGDOUBLE,
+-  TYPE_CHAR,
+-#if HAVE_WINT_T
+-  TYPE_WIDE_CHAR,
+-#endif
+-  TYPE_STRING,
+-#if HAVE_WCHAR_T
+-  TYPE_WIDE_STRING,
+-#endif
+-  TYPE_POINTER,
+-  TYPE_COUNT_SCHAR_POINTER,
+-  TYPE_COUNT_SHORT_POINTER,
+-  TYPE_COUNT_INT_POINTER,
+-  TYPE_COUNT_LONGINT_POINTER
+-#if HAVE_LONG_LONG_INT
+-, TYPE_COUNT_LONGLONGINT_POINTER
+-#endif
+-#if ENABLE_UNISTDIO
+-  /* The unistdio extensions.  */
+-, TYPE_U8_STRING
+-, TYPE_U16_STRING
+-, TYPE_U32_STRING
+-#endif
+-} arg_type;
+-
+-/* Polymorphic argument */
+-typedef struct
+-{
+-  arg_type type;
+-  union
+-  {
+-    signed char			a_schar;
+-    unsigned char		a_uchar;
+-    short			a_short;
+-    unsigned short		a_ushort;
+-    int				a_int;
+-    unsigned int		a_uint;
+-    long int			a_longint;
+-    unsigned long int		a_ulongint;
+-#if HAVE_LONG_LONG_INT
+-    long long int		a_longlongint;
+-    unsigned long long int	a_ulonglongint;
+-#endif
+-    float			a_float;
+-    double			a_double;
+-    long double			a_longdouble;
+-    int				a_char;
+-#if HAVE_WINT_T
+-    wint_t			a_wide_char;
+-#endif
+-    const char*			a_string;
+-#if HAVE_WCHAR_T
+-    const wchar_t*		a_wide_string;
+-#endif
+-    void*			a_pointer;
+-    signed char *		a_count_schar_pointer;
+-    short *			a_count_short_pointer;
+-    int *			a_count_int_pointer;
+-    long int *			a_count_longint_pointer;
+-#if HAVE_LONG_LONG_INT
+-    long long int *		a_count_longlongint_pointer;
+-#endif
+-#if ENABLE_UNISTDIO
+-    /* The unistdio extensions.  */
+-    const uint8_t *		a_u8_string;
+-    const uint16_t *		a_u16_string;
+-    const uint32_t *		a_u32_string;
+-#endif
+-  }
+-  a;
+-}
+-argument;
+-
+-typedef struct
+-{
+-  size_t count;
+-  argument *arg;
+-}
+-arguments;
+-
+-
+-/* Fetch the arguments, putting them into a. */
+-#ifdef STATIC
+-STATIC
+-#else
+-extern
+-#endif
+-int PRINTF_FETCHARGS (va_list args, arguments *a);
+-
+-#endif /* _PRINTF_ARGS_H */
+--- a/intl/printf-parse.c
++++ /dev/null
+@@ -1,590 +0,0 @@
+-/* Formatted output to strings.
+-   Copyright (C) 1999-2000, 2002-2003, 2006-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* This file can be parametrized with the following macros:
+-     CHAR_T             The element type of the format string.
+-     CHAR_T_ONLY_ASCII  Set to 1 to enable verification that all characters
+-                        in the format string are ASCII.
+-     DIRECTIVE          Structure denoting a format directive.
+-                        Depends on CHAR_T.
+-     DIRECTIVES         Structure denoting the set of format directives of a
+-                        format string.  Depends on CHAR_T.
+-     PRINTF_PARSE       Function that parses a format string.
+-                        Depends on CHAR_T.
+-     STATIC             Set to 'static' to declare the function static.
+-     ENABLE_UNISTDIO    Set to 1 to enable the unistdio extensions.  */
+-
+-#ifndef PRINTF_PARSE
+-# include <config.h>
+-#endif
+-
+-/* Specification.  */
+-#ifndef PRINTF_PARSE
+-# include "printf-parse.h"
+-#endif
+-
+-/* Default parameters.  */
+-#ifndef PRINTF_PARSE
+-# define PRINTF_PARSE printf_parse
+-# define CHAR_T char
+-# define DIRECTIVE char_directive
+-# define DIRECTIVES char_directives
+-#endif
+-
+-/* Get size_t, NULL.  */
+-#include <stddef.h>
+-
+-/* Get intmax_t.  */
+-#if defined IN_LIBINTL || defined IN_LIBASPRINTF
+-# if HAVE_STDINT_H_WITH_UINTMAX
+-#  include <stdint.h>
+-# endif
+-# if HAVE_INTTYPES_H_WITH_UINTMAX
+-#  include <inttypes.h>
+-# endif
+-#else
+-# include <stdint.h>
+-#endif
+-
+-/* malloc(), realloc(), free().  */
+-#include <stdlib.h>
+-
+-/* errno.  */
+-#include <errno.h>
+-
+-/* Checked size_t computations.  */
+-#include "xsize.h"
+-
+-#if CHAR_T_ONLY_ASCII
+-/* c_isascii().  */
+-# include "c-ctype.h"
+-#endif
+-
+-#ifdef STATIC
+-STATIC
+-#endif
+-int
+-PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
+-{
+-  const CHAR_T *cp = format;		/* pointer into format */
+-  size_t arg_posn = 0;		/* number of regular arguments consumed */
+-  size_t d_allocated;			/* allocated elements of d->dir */
+-  size_t a_allocated;			/* allocated elements of a->arg */
+-  size_t max_width_length = 0;
+-  size_t max_precision_length = 0;
+-
+-  d->count = 0;
+-  d_allocated = 1;
+-  d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE));
+-  if (d->dir == NULL)
+-    /* Out of memory.  */
+-    goto out_of_memory_1;
+-
+-  a->count = 0;
+-  a_allocated = 0;
+-  a->arg = NULL;
+-
+-#define REGISTER_ARG(_index_,_type_) \
+-  {									\
+-    size_t n = (_index_);						\
+-    if (n >= a_allocated)						\
+-      {									\
+-	size_t memory_size;						\
+-	argument *memory;						\
+-									\
+-	a_allocated = xtimes (a_allocated, 2);				\
+-	if (a_allocated <= n)						\
+-	  a_allocated = xsum (n, 1);					\
+-	memory_size = xtimes (a_allocated, sizeof (argument));		\
+-	if (size_overflow_p (memory_size))				\
+-	  /* Overflow, would lead to out of memory.  */			\
+-	  goto out_of_memory;						\
+-	memory = (argument *) (a->arg					\
+-			       ? realloc (a->arg, memory_size)		\
+-			       : malloc (memory_size));			\
+-	if (memory == NULL)						\
+-	  /* Out of memory.  */						\
+-	  goto out_of_memory;						\
+-	a->arg = memory;						\
+-      }									\
+-    while (a->count <= n)						\
+-      a->arg[a->count++].type = TYPE_NONE;				\
+-    if (a->arg[n].type == TYPE_NONE)					\
+-      a->arg[n].type = (_type_);					\
+-    else if (a->arg[n].type != (_type_))				\
+-      /* Ambiguous type for positional argument.  */			\
+-      goto error;							\
+-  }
+-
+-  while (*cp != '\0')
+-    {
+-      CHAR_T c = *cp++;
+-      if (c == '%')
+-	{
+-	  size_t arg_index = ARG_NONE;
+-	  DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */
+-
+-	  /* Initialize the next directive.  */
+-	  dp->dir_start = cp - 1;
+-	  dp->flags = 0;
+-	  dp->width_start = NULL;
+-	  dp->width_end = NULL;
+-	  dp->width_arg_index = ARG_NONE;
+-	  dp->precision_start = NULL;
+-	  dp->precision_end = NULL;
+-	  dp->precision_arg_index = ARG_NONE;
+-	  dp->arg_index = ARG_NONE;
+-
+-	  /* Test for positional argument.  */
+-	  if (*cp >= '0' && *cp <= '9')
+-	    {
+-	      const CHAR_T *np;
+-
+-	      for (np = cp; *np >= '0' && *np <= '9'; np++)
+-		;
+-	      if (*np == '$')
+-		{
+-		  size_t n = 0;
+-
+-		  for (np = cp; *np >= '0' && *np <= '9'; np++)
+-		    n = xsum (xtimes (n, 10), *np - '0');
+-		  if (n == 0)
+-		    /* Positional argument 0.  */
+-		    goto error;
+-		  if (size_overflow_p (n))
+-		    /* n too large, would lead to out of memory later.  */
+-		    goto error;
+-		  arg_index = n - 1;
+-		  cp = np + 1;
+-		}
+-	    }
+-
+-	  /* Read the flags.  */
+-	  for (;;)
+-	    {
+-	      if (*cp == '\'')
+-		{
+-		  dp->flags |= FLAG_GROUP;
+-		  cp++;
+-		}
+-	      else if (*cp == '-')
+-		{
+-		  dp->flags |= FLAG_LEFT;
+-		  cp++;
+-		}
+-	      else if (*cp == '+')
+-		{
+-		  dp->flags |= FLAG_SHOWSIGN;
+-		  cp++;
+-		}
+-	      else if (*cp == ' ')
+-		{
+-		  dp->flags |= FLAG_SPACE;
+-		  cp++;
+-		}
+-	      else if (*cp == '#')
+-		{
+-		  dp->flags |= FLAG_ALT;
+-		  cp++;
+-		}
+-	      else if (*cp == '0')
+-		{
+-		  dp->flags |= FLAG_ZERO;
+-		  cp++;
+-		}
+-	      else
+-		break;
+-	    }
+-
+-	  /* Parse the field width.  */
+-	  if (*cp == '*')
+-	    {
+-	      dp->width_start = cp;
+-	      cp++;
+-	      dp->width_end = cp;
+-	      if (max_width_length < 1)
+-		max_width_length = 1;
+-
+-	      /* Test for positional argument.  */
+-	      if (*cp >= '0' && *cp <= '9')
+-		{
+-		  const CHAR_T *np;
+-
+-		  for (np = cp; *np >= '0' && *np <= '9'; np++)
+-		    ;
+-		  if (*np == '$')
+-		    {
+-		      size_t n = 0;
+-
+-		      for (np = cp; *np >= '0' && *np <= '9'; np++)
+-			n = xsum (xtimes (n, 10), *np - '0');
+-		      if (n == 0)
+-			/* Positional argument 0.  */
+-			goto error;
+-		      if (size_overflow_p (n))
+-			/* n too large, would lead to out of memory later.  */
+-			goto error;
+-		      dp->width_arg_index = n - 1;
+-		      cp = np + 1;
+-		    }
+-		}
+-	      if (dp->width_arg_index == ARG_NONE)
+-		{
+-		  dp->width_arg_index = arg_posn++;
+-		  if (dp->width_arg_index == ARG_NONE)
+-		    /* arg_posn wrapped around.  */
+-		    goto error;
+-		}
+-	      REGISTER_ARG (dp->width_arg_index, TYPE_INT);
+-	    }
+-	  else if (*cp >= '0' && *cp <= '9')
+-	    {
+-	      size_t width_length;
+-
+-	      dp->width_start = cp;
+-	      for (; *cp >= '0' && *cp <= '9'; cp++)
+-		;
+-	      dp->width_end = cp;
+-	      width_length = dp->width_end - dp->width_start;
+-	      if (max_width_length < width_length)
+-		max_width_length = width_length;
+-	    }
+-
+-	  /* Parse the precision.  */
+-	  if (*cp == '.')
+-	    {
+-	      cp++;
+-	      if (*cp == '*')
+-		{
+-		  dp->precision_start = cp - 1;
+-		  cp++;
+-		  dp->precision_end = cp;
+-		  if (max_precision_length < 2)
+-		    max_precision_length = 2;
+-
+-		  /* Test for positional argument.  */
+-		  if (*cp >= '0' && *cp <= '9')
+-		    {
+-		      const CHAR_T *np;
+-
+-		      for (np = cp; *np >= '0' && *np <= '9'; np++)
+-			;
+-		      if (*np == '$')
+-			{
+-			  size_t n = 0;
+-
+-			  for (np = cp; *np >= '0' && *np <= '9'; np++)
+-			    n = xsum (xtimes (n, 10), *np - '0');
+-			  if (n == 0)
+-			    /* Positional argument 0.  */
+-			    goto error;
+-			  if (size_overflow_p (n))
+-			    /* n too large, would lead to out of memory
+-			       later.  */
+-			    goto error;
+-			  dp->precision_arg_index = n - 1;
+-			  cp = np + 1;
+-			}
+-		    }
+-		  if (dp->precision_arg_index == ARG_NONE)
+-		    {
+-		      dp->precision_arg_index = arg_posn++;
+-		      if (dp->precision_arg_index == ARG_NONE)
+-			/* arg_posn wrapped around.  */
+-			goto error;
+-		    }
+-		  REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
+-		}
+-	      else
+-		{
+-		  size_t precision_length;
+-
+-		  dp->precision_start = cp - 1;
+-		  for (; *cp >= '0' && *cp <= '9'; cp++)
+-		    ;
+-		  dp->precision_end = cp;
+-		  precision_length = dp->precision_end - dp->precision_start;
+-		  if (max_precision_length < precision_length)
+-		    max_precision_length = precision_length;
+-		}
+-	    }
+-
+-	  {
+-	    arg_type type;
+-
+-	    /* Parse argument type/size specifiers.  */
+-	    {
+-	      int flags = 0;
+-
+-	      for (;;)
+-		{
+-		  if (*cp == 'h')
+-		    {
+-		      flags |= (1 << (flags & 1));
+-		      cp++;
+-		    }
+-		  else if (*cp == 'L')
+-		    {
+-		      flags |= 4;
+-		      cp++;
+-		    }
+-		  else if (*cp == 'l')
+-		    {
+-		      flags += 8;
+-		      cp++;
+-		    }
+-		  else if (*cp == 'j')
+-		    {
+-		      if (sizeof (intmax_t) > sizeof (long))
+-			{
+-			  /* intmax_t = long long */
+-			  flags += 16;
+-			}
+-		      else if (sizeof (intmax_t) > sizeof (int))
+-			{
+-			  /* intmax_t = long */
+-			  flags += 8;
+-			}
+-		      cp++;
+-		    }
+-		  else if (*cp == 'z' || *cp == 'Z')
+-		    {
+-		      /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
+-			 because the warning facility in gcc-2.95.2 understands
+-			 only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784).  */
+-		      if (sizeof (size_t) > sizeof (long))
+-			{
+-			  /* size_t = long long */
+-			  flags += 16;
+-			}
+-		      else if (sizeof (size_t) > sizeof (int))
+-			{
+-			  /* size_t = long */
+-			  flags += 8;
+-			}
+-		      cp++;
+-		    }
+-		  else if (*cp == 't')
+-		    {
+-		      if (sizeof (ptrdiff_t) > sizeof (long))
+-			{
+-			  /* ptrdiff_t = long long */
+-			  flags += 16;
+-			}
+-		      else if (sizeof (ptrdiff_t) > sizeof (int))
+-			{
+-			  /* ptrdiff_t = long */
+-			  flags += 8;
+-			}
+-		      cp++;
+-		    }
+-		  else
+-		    break;
+-		}
+-
+-	      /* Read the conversion character.  */
+-	      c = *cp++;
+-	      switch (c)
+-		{
+-		case 'd': case 'i':
+-#if HAVE_LONG_LONG_INT
+-		  /* If 'long long' exists and is larger than 'long':  */
+-		  if (flags >= 16 || (flags & 4))
+-		    type = TYPE_LONGLONGINT;
+-		  else
+-#endif
+-		  /* If 'long long' exists and is the same as 'long', we parse
+-		     "lld" into TYPE_LONGINT.  */
+-		  if (flags >= 8)
+-		    type = TYPE_LONGINT;
+-		  else if (flags & 2)
+-		    type = TYPE_SCHAR;
+-		  else if (flags & 1)
+-		    type = TYPE_SHORT;
+-		  else
+-		    type = TYPE_INT;
+-		  break;
+-		case 'o': case 'u': case 'x': case 'X':
+-#if HAVE_LONG_LONG_INT
+-		  /* If 'long long' exists and is larger than 'long':  */
+-		  if (flags >= 16 || (flags & 4))
+-		    type = TYPE_ULONGLONGINT;
+-		  else
+-#endif
+-		  /* If 'unsigned long long' exists and is the same as
+-		     'unsigned long', we parse "llu" into TYPE_ULONGINT.  */
+-		  if (flags >= 8)
+-		    type = TYPE_ULONGINT;
+-		  else if (flags & 2)
+-		    type = TYPE_UCHAR;
+-		  else if (flags & 1)
+-		    type = TYPE_USHORT;
+-		  else
+-		    type = TYPE_UINT;
+-		  break;
+-		case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+-		case 'a': case 'A':
+-		  if (flags >= 16 || (flags & 4))
+-		    type = TYPE_LONGDOUBLE;
+-		  else
+-		    type = TYPE_DOUBLE;
+-		  break;
+-		case 'c':
+-		  if (flags >= 8)
+-#if HAVE_WINT_T
+-		    type = TYPE_WIDE_CHAR;
+-#else
+-		    goto error;
+-#endif
+-		  else
+-		    type = TYPE_CHAR;
+-		  break;
+-#if HAVE_WINT_T
+-		case 'C':
+-		  type = TYPE_WIDE_CHAR;
+-		  c = 'c';
+-		  break;
+-#endif
+-		case 's':
+-		  if (flags >= 8)
+-#if HAVE_WCHAR_T
+-		    type = TYPE_WIDE_STRING;
+-#else
+-		    goto error;
+-#endif
+-		  else
+-		    type = TYPE_STRING;
+-		  break;
+-#if HAVE_WCHAR_T
+-		case 'S':
+-		  type = TYPE_WIDE_STRING;
+-		  c = 's';
+-		  break;
+-#endif
+-		case 'p':
+-		  type = TYPE_POINTER;
+-		  break;
+-		case 'n':
+-#if HAVE_LONG_LONG_INT
+-		  /* If 'long long' exists and is larger than 'long':  */
+-		  if (flags >= 16 || (flags & 4))
+-		    type = TYPE_COUNT_LONGLONGINT_POINTER;
+-		  else
+-#endif
+-		  /* If 'long long' exists and is the same as 'long', we parse
+-		     "lln" into TYPE_COUNT_LONGINT_POINTER.  */
+-		  if (flags >= 8)
+-		    type = TYPE_COUNT_LONGINT_POINTER;
+-		  else if (flags & 2)
+-		    type = TYPE_COUNT_SCHAR_POINTER;
+-		  else if (flags & 1)
+-		    type = TYPE_COUNT_SHORT_POINTER;
+-		  else
+-		    type = TYPE_COUNT_INT_POINTER;
+-		  break;
+-#if ENABLE_UNISTDIO
+-		/* The unistdio extensions.  */
+-		case 'U':
+-		  if (flags >= 16)
+-		    type = TYPE_U32_STRING;
+-		  else if (flags >= 8)
+-		    type = TYPE_U16_STRING;
+-		  else
+-		    type = TYPE_U8_STRING;
+-		  break;
+-#endif
+-		case '%':
+-		  type = TYPE_NONE;
+-		  break;
+-		default:
+-		  /* Unknown conversion character.  */
+-		  goto error;
+-		}
+-	    }
+-
+-	    if (type != TYPE_NONE)
+-	      {
+-		dp->arg_index = arg_index;
+-		if (dp->arg_index == ARG_NONE)
+-		  {
+-		    dp->arg_index = arg_posn++;
+-		    if (dp->arg_index == ARG_NONE)
+-		      /* arg_posn wrapped around.  */
+-		      goto error;
+-		  }
+-		REGISTER_ARG (dp->arg_index, type);
+-	      }
+-	    dp->conversion = c;
+-	    dp->dir_end = cp;
+-	  }
+-
+-	  d->count++;
+-	  if (d->count >= d_allocated)
+-	    {
+-	      size_t memory_size;
+-	      DIRECTIVE *memory;
+-
+-	      d_allocated = xtimes (d_allocated, 2);
+-	      memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
+-	      if (size_overflow_p (memory_size))
+-		/* Overflow, would lead to out of memory.  */
+-		goto out_of_memory;
+-	      memory = (DIRECTIVE *) realloc (d->dir, memory_size);
+-	      if (memory == NULL)
+-		/* Out of memory.  */
+-		goto out_of_memory;
+-	      d->dir = memory;
+-	    }
+-	}
+-#if CHAR_T_ONLY_ASCII
+-      else if (!c_isascii (c))
+-	{
+-	  /* Non-ASCII character.  Not supported.  */
+-	  goto error;
+-	}
+-#endif
+-    }
+-  d->dir[d->count].dir_start = cp;
+-
+-  d->max_width_length = max_width_length;
+-  d->max_precision_length = max_precision_length;
+-  return 0;
+-
+-error:
+-  if (a->arg)
+-    free (a->arg);
+-  if (d->dir)
+-    free (d->dir);
+-  errno = EINVAL;
+-  return -1;
+-
+-out_of_memory:
+-  if (a->arg)
+-    free (a->arg);
+-  if (d->dir)
+-    free (d->dir);
+-out_of_memory_1:
+-  errno = ENOMEM;
+-  return -1;
+-}
+-
+-#undef PRINTF_PARSE
+-#undef DIRECTIVES
+-#undef DIRECTIVE
+-#undef CHAR_T_ONLY_ASCII
+-#undef CHAR_T
+--- a/intl/printf-parse.h
++++ /dev/null
+@@ -1,75 +0,0 @@
+-/* Parse printf format string.
+-   Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _PRINTF_PARSE_H
+-#define _PRINTF_PARSE_H
+-
+-#include "printf-args.h"
+-
+-
+-/* Flags */
+-#define FLAG_GROUP	 1	/* ' flag */
+-#define FLAG_LEFT	 2	/* - flag */
+-#define FLAG_SHOWSIGN	 4	/* + flag */
+-#define FLAG_SPACE	 8	/* space flag */
+-#define FLAG_ALT	16	/* # flag */
+-#define FLAG_ZERO	32
+-
+-/* arg_index value indicating that no argument is consumed.  */
+-#define ARG_NONE	(~(size_t)0)
+-
+-/* A parsed directive.  */
+-typedef struct
+-{
+-  const char* dir_start;
+-  const char* dir_end;
+-  int flags;
+-  const char* width_start;
+-  const char* width_end;
+-  size_t width_arg_index;
+-  const char* precision_start;
+-  const char* precision_end;
+-  size_t precision_arg_index;
+-  char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
+-  size_t arg_index;
+-}
+-char_directive;
+-
+-/* A parsed format string.  */
+-typedef struct
+-{
+-  size_t count;
+-  char_directive *dir;
+-  size_t max_width_length;
+-  size_t max_precision_length;
+-}
+-char_directives;
+-
+-
+-/* Parses the format string.  Fills in the number N of directives, and fills
+-   in directives[0], ..., directives[N-1], and sets directives[N].dir_start
+-   to the end of the format string.  Also fills in the arg_type fields of the
+-   arguments and the needed count of arguments.  */
+-#ifdef STATIC
+-STATIC
+-#else
+-extern
+-#endif
+-int printf_parse (const char *format, char_directives *d, arguments *a);
+-
+-#endif /* _PRINTF_PARSE_H */
+--- a/intl/printf.c
++++ /dev/null
+@@ -1,427 +0,0 @@
+-/* Formatted output to strings, using POSIX/XSI format strings with positions.
+-   Copyright (C) 2003, 2006-2007 Free Software Foundation, Inc.
+-   Written by Bruno Haible <bruno@clisp.org>, 2003.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#ifdef __GNUC__
+-# define alloca __builtin_alloca
+-# define HAVE_ALLOCA 1
+-#else
+-# ifdef _MSC_VER
+-#  include <malloc.h>
+-#  define alloca _alloca
+-# else
+-#  if defined HAVE_ALLOCA_H || defined _LIBC
+-#   include <alloca.h>
+-#  else
+-#   ifdef _AIX
+- #pragma alloca
+-#   else
+-#    ifndef alloca
+-char *alloca ();
+-#    endif
+-#   endif
+-#  endif
+-# endif
+-#endif
+-
+-#include <stdio.h>
+-
+-#if !HAVE_POSIX_PRINTF
+-
+-#include <errno.h>
+-#include <limits.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW.  */
+-#ifndef EOVERFLOW
+-# define EOVERFLOW E2BIG
+-#endif
+-
+-/* When building a DLL, we must export some functions.  Note that because
+-   the functions are only defined for binary backward compatibility, we
+-   don't need to use __declspec(dllimport) in any case.  */
+-#if defined _MSC_VER && BUILDING_DLL
+-# define DLL_EXPORTED __declspec(dllexport)
+-#else
+-# define DLL_EXPORTED
+-#endif
+-
+-#define STATIC static
+-
+-/* This needs to be consistent with libgnuintl.h.in.  */
+-#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
+-/* Don't break __attribute__((format(printf,M,N))).
+-   This redefinition is only possible because the libc in NetBSD, Cygwin,
+-   mingw does not have a function __printf__.  */
+-# define libintl_printf __printf__
+-#endif
+-
+-/* Define auxiliary functions declared in "printf-args.h".  */
+-#include "printf-args.c"
+-
+-/* Define auxiliary functions declared in "printf-parse.h".  */
+-#include "printf-parse.c"
+-
+-/* Define functions declared in "vasnprintf.h".  */
+-#define vasnprintf libintl_vasnprintf
+-#include "vasnprintf.c"
+-#if 0 /* not needed */
+-#define asnprintf libintl_asnprintf
+-#include "asnprintf.c"
+-#endif
+-
+-DLL_EXPORTED
+-int
+-libintl_vfprintf (FILE *stream, const char *format, va_list args)
+-{
+-  if (strchr (format, '$') == NULL)
+-    return vfprintf (stream, format, args);
+-  else
+-    {
+-      size_t length;
+-      char *result = libintl_vasnprintf (NULL, &length, format, args);
+-      int retval = -1;
+-      if (result != NULL)
+-	{
+-	  size_t written = fwrite (result, 1, length, stream);
+-	  free (result);
+-	  if (written == length)
+-	    {
+-	      if (length > INT_MAX)
+-		errno = EOVERFLOW;
+-	      else
+-		retval = length;
+-	    }
+-	}
+-      return retval;
+-    }
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_fprintf (FILE *stream, const char *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vfprintf (stream, format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_vprintf (const char *format, va_list args)
+-{
+-  return libintl_vfprintf (stdout, format, args);
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_printf (const char *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vprintf (format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_vsprintf (char *resultbuf, const char *format, va_list args)
+-{
+-  if (strchr (format, '$') == NULL)
+-    return vsprintf (resultbuf, format, args);
+-  else
+-    {
+-      size_t length = (size_t) ~0 / (4 * sizeof (char));
+-      char *result = libintl_vasnprintf (resultbuf, &length, format, args);
+-      if (result != resultbuf)
+-	{
+-	  free (result);
+-	  return -1;
+-	}
+-      if (length > INT_MAX)
+-	{
+-	  errno = EOVERFLOW;
+-	  return -1;
+-	}
+-      else
+-	return length;
+-    }
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_sprintf (char *resultbuf, const char *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vsprintf (resultbuf, format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-#if HAVE_SNPRINTF
+-
+-# if HAVE_DECL__SNPRINTF
+-   /* Windows.  */
+-#  define system_vsnprintf _vsnprintf
+-# else
+-   /* Unix.  */
+-#  define system_vsnprintf vsnprintf
+-# endif
+-
+-DLL_EXPORTED
+-int
+-libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args)
+-{
+-  if (strchr (format, '$') == NULL)
+-    return system_vsnprintf (resultbuf, length, format, args);
+-  else
+-    {
+-      size_t maxlength = length;
+-      char *result = libintl_vasnprintf (resultbuf, &length, format, args);
+-      if (result != resultbuf)
+-	{
+-	  if (maxlength > 0)
+-	    {
+-	      size_t pruned_length =
+-		(length < maxlength ? length : maxlength - 1);
+-	      memcpy (resultbuf, result, pruned_length);
+-	      resultbuf[pruned_length] = '\0';
+-	    }
+-	  free (result);
+-	}
+-      if (length > INT_MAX)
+-	{
+-	  errno = EOVERFLOW;
+-	  return -1;
+-	}
+-      else
+-	return length;
+-    }
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_snprintf (char *resultbuf, size_t length, const char *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vsnprintf (resultbuf, length, format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-#endif
+-
+-#if HAVE_ASPRINTF
+-
+-DLL_EXPORTED
+-int
+-libintl_vasprintf (char **resultp, const char *format, va_list args)
+-{
+-  size_t length;
+-  char *result = libintl_vasnprintf (NULL, &length, format, args);
+-  if (result == NULL)
+-    return -1;
+-  if (length > INT_MAX)
+-    {
+-      free (result);
+-      errno = EOVERFLOW;
+-      return -1;
+-    }
+-  *resultp = result;
+-  return length;
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_asprintf (char **resultp, const char *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vasprintf (resultp, format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-#endif
+-
+-#if HAVE_FWPRINTF
+-
+-#include <wchar.h>
+-
+-#define WIDE_CHAR_VERSION 1
+-
+-#include "wprintf-parse.h"
+-/* Define auxiliary functions declared in "wprintf-parse.h".  */
+-#define CHAR_T wchar_t
+-#define DIRECTIVE wchar_t_directive
+-#define DIRECTIVES wchar_t_directives
+-#define PRINTF_PARSE wprintf_parse
+-#include "printf-parse.c"
+-
+-/* Define functions declared in "vasnprintf.h".  */
+-#define vasnwprintf libintl_vasnwprintf
+-#include "vasnprintf.c"
+-#if 0 /* not needed */
+-#define asnwprintf libintl_asnwprintf
+-#include "asnprintf.c"
+-#endif
+-
+-# if HAVE_DECL__SNWPRINTF
+-   /* Windows.  */
+-#  define system_vswprintf _vsnwprintf
+-# else
+-   /* Unix.  */
+-#  define system_vswprintf vswprintf
+-# endif
+-
+-DLL_EXPORTED
+-int
+-libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args)
+-{
+-  if (wcschr (format, '$') == NULL)
+-    return vfwprintf (stream, format, args);
+-  else
+-    {
+-      size_t length;
+-      wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args);
+-      int retval = -1;
+-      if (result != NULL)
+-	{
+-	  size_t i;
+-	  for (i = 0; i < length; i++)
+-	    if (fputwc (result[i], stream) == WEOF)
+-	      break;
+-	  free (result);
+-	  if (i == length)
+-	    {
+-	      if (length > INT_MAX)
+-		errno = EOVERFLOW;
+-	      else
+-		retval = length;
+-	    }
+-	}
+-      return retval;
+-    }
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_fwprintf (FILE *stream, const wchar_t *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vfwprintf (stream, format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_vwprintf (const wchar_t *format, va_list args)
+-{
+-  return libintl_vfwprintf (stdout, format, args);
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_wprintf (const wchar_t *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vwprintf (format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args)
+-{
+-  if (wcschr (format, '$') == NULL)
+-    return system_vswprintf (resultbuf, length, format, args);
+-  else
+-    {
+-      size_t maxlength = length;
+-      wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args);
+-      if (result != resultbuf)
+-	{
+-	  if (maxlength > 0)
+-	    {
+-	      size_t pruned_length =
+-		(length < maxlength ? length : maxlength - 1);
+-	      memcpy (resultbuf, result, pruned_length * sizeof (wchar_t));
+-	      resultbuf[pruned_length] = 0;
+-	    }
+-	  free (result);
+-	  /* Unlike vsnprintf, which has to return the number of character that
+-	     would have been produced if the resultbuf had been sufficiently
+-	     large, the vswprintf function has to return a negative value if
+-	     the resultbuf was not sufficiently large.  */
+-	  if (length >= maxlength)
+-	    return -1;
+-	}
+-      if (length > INT_MAX)
+-	{
+-	  errno = EOVERFLOW;
+-	  return -1;
+-	}
+-      else
+-	return length;
+-    }
+-}
+-
+-DLL_EXPORTED
+-int
+-libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...)
+-{
+-  va_list args;
+-  int retval;
+-
+-  va_start (args, format);
+-  retval = libintl_vswprintf (resultbuf, length, format, args);
+-  va_end (args);
+-  return retval;
+-}
+-
+-#endif
+-
+-#endif
+--- a/intl/ref-add.sin
++++ /dev/null
+@@ -1,31 +0,0 @@
+-# Add this package to a list of references stored in a text file.
+-#
+-#   Copyright (C) 2000 Free Software Foundation, Inc.
+-#
+-#   This program 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, 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
+-#   Library General Public License for more details.
+-#
+-#   You should have received a copy of the GNU Library 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.
+-#
+-# Written by Bruno Haible <haible@clisp.cons.org>.
+-#
+-/^# Packages using this file: / {
+-  s/# Packages using this file://
+-  ta
+-  :a
+-  s/ @PACKAGE@ / @PACKAGE@ /
+-  tb
+-  s/ $/ @PACKAGE@ /
+-  :b
+-  s/^/# Packages using this file:/
+-}
+--- a/intl/ref-del.sin
++++ /dev/null
+@@ -1,26 +0,0 @@
+-# Remove this package from a list of references stored in a text file.
+-#
+-#   Copyright (C) 2000 Free Software Foundation, Inc.
+-#
+-#   This program 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, 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
+-#   Library General Public License for more details.
+-#
+-#   You should have received a copy of the GNU Library 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.
+-#
+-# Written by Bruno Haible <haible@clisp.cons.org>.
+-#
+-/^# Packages using this file: / {
+-  s/# Packages using this file://
+-  s/ @PACKAGE@ / /
+-  s/^/# Packages using this file:/
+-}
+--- a/intl/relocatable.c
++++ /dev/null
+@@ -1,468 +0,0 @@
+-/* Provide relocatable packages.
+-   Copyright (C) 2003-2006 Free Software Foundation, Inc.
+-   Written by Bruno Haible <bruno@clisp.org>, 2003.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-
+-/* Tell glibc's <stdio.h> to provide a prototype for getline().
+-   This must come before <config.h> because <config.h> may include
+-   <features.h>, and once <features.h> has been included, it's too late.  */
+-#ifndef _GNU_SOURCE
+-# define _GNU_SOURCE	1
+-#endif
+-
+-#include <config.h>
+-
+-/* Specification.  */
+-#include "relocatable.h"
+-
+-#if ENABLE_RELOCATABLE
+-
+-#include <stddef.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#ifdef NO_XMALLOC
+-# define xmalloc malloc
+-#else
+-# include "xalloc.h"
+-#endif
+-
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
+-# define WIN32_LEAN_AND_MEAN
+-# include <windows.h>
+-#endif
+-
+-#if DEPENDS_ON_LIBCHARSET
+-# include <libcharset.h>
+-#endif
+-#if DEPENDS_ON_LIBICONV && HAVE_ICONV
+-# include <iconv.h>
+-#endif
+-#if DEPENDS_ON_LIBINTL && ENABLE_NLS
+-# include <libintl.h>
+-#endif
+-
+-/* Faked cheap 'bool'.  */
+-#undef bool
+-#undef false
+-#undef true
+-#define bool int
+-#define false 0
+-#define true 1
+-
+-/* Pathname support.
+-   ISSLASH(C)           tests whether C is a directory separator character.
+-   IS_PATH_WITH_DIR(P)  tests whether P contains a directory specification.
+- */
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+-  /* Win32, Cygwin, OS/2, DOS */
+-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+-# define HAS_DEVICE(P) \
+-    ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+-     && (P)[1] == ':')
+-# define IS_PATH_WITH_DIR(P) \
+-    (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
+-# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
+-#else
+-  /* Unix */
+-# define ISSLASH(C) ((C) == '/')
+-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
+-# define FILE_SYSTEM_PREFIX_LEN(P) 0
+-#endif
+-
+-/* Original installation prefix.  */
+-static char *orig_prefix;
+-static size_t orig_prefix_len;
+-/* Current installation prefix.  */
+-static char *curr_prefix;
+-static size_t curr_prefix_len;
+-/* These prefixes do not end in a slash.  Anything that will be concatenated
+-   to them must start with a slash.  */
+-
+-/* Sets the original and the current installation prefix of this module.
+-   Relocation simply replaces a pathname starting with the original prefix
+-   by the corresponding pathname with the current prefix instead.  Both
+-   prefixes should be directory names without trailing slash (i.e. use ""
+-   instead of "/").  */
+-static void
+-set_this_relocation_prefix (const char *orig_prefix_arg,
+-			    const char *curr_prefix_arg)
+-{
+-  if (orig_prefix_arg != NULL && curr_prefix_arg != NULL
+-      /* Optimization: if orig_prefix and curr_prefix are equal, the
+-	 relocation is a nop.  */
+-      && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
+-    {
+-      /* Duplicate the argument strings.  */
+-      char *memory;
+-
+-      orig_prefix_len = strlen (orig_prefix_arg);
+-      curr_prefix_len = strlen (curr_prefix_arg);
+-      memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1);
+-#ifdef NO_XMALLOC
+-      if (memory != NULL)
+-#endif
+-	{
+-	  memcpy (memory, orig_prefix_arg, orig_prefix_len + 1);
+-	  orig_prefix = memory;
+-	  memory += orig_prefix_len + 1;
+-	  memcpy (memory, curr_prefix_arg, curr_prefix_len + 1);
+-	  curr_prefix = memory;
+-	  return;
+-	}
+-    }
+-  orig_prefix = NULL;
+-  curr_prefix = NULL;
+-  /* Don't worry about wasted memory here - this function is usually only
+-     called once.  */
+-}
+-
+-/* Sets the original and the current installation prefix of the package.
+-   Relocation simply replaces a pathname starting with the original prefix
+-   by the corresponding pathname with the current prefix instead.  Both
+-   prefixes should be directory names without trailing slash (i.e. use ""
+-   instead of "/").  */
+-void
+-set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
+-{
+-  set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+-
+-  /* Now notify all dependent libraries.  */
+-#if DEPENDS_ON_LIBCHARSET
+-  libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+-#endif
+-#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109
+-  libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+-#endif
+-#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix
+-  libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
+-#endif
+-}
+-
+-#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
+-
+-/* Convenience function:
+-   Computes the current installation prefix, based on the original
+-   installation prefix, the original installation directory of a particular
+-   file, and the current pathname of this file.  Returns NULL upon failure.  */
+-#ifdef IN_LIBRARY
+-#define compute_curr_prefix local_compute_curr_prefix
+-static
+-#endif
+-const char *
+-compute_curr_prefix (const char *orig_installprefix,
+-		     const char *orig_installdir,
+-		     const char *curr_pathname)
+-{
+-  const char *curr_installdir;
+-  const char *rel_installdir;
+-
+-  if (curr_pathname == NULL)
+-    return NULL;
+-
+-  /* Determine the relative installation directory, relative to the prefix.
+-     This is simply the difference between orig_installprefix and
+-     orig_installdir.  */
+-  if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix))
+-      != 0)
+-    /* Shouldn't happen - nothing should be installed outside $(prefix).  */
+-    return NULL;
+-  rel_installdir = orig_installdir + strlen (orig_installprefix);
+-
+-  /* Determine the current installation directory.  */
+-  {
+-    const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname);
+-    const char *p = curr_pathname + strlen (curr_pathname);
+-    char *q;
+-
+-    while (p > p_base)
+-      {
+-	p--;
+-	if (ISSLASH (*p))
+-	  break;
+-      }
+-
+-    q = (char *) xmalloc (p - curr_pathname + 1);
+-#ifdef NO_XMALLOC
+-    if (q == NULL)
+-      return NULL;
+-#endif
+-    memcpy (q, curr_pathname, p - curr_pathname);
+-    q[p - curr_pathname] = '\0';
+-    curr_installdir = q;
+-  }
+-
+-  /* Compute the current installation prefix by removing the trailing
+-     rel_installdir from it.  */
+-  {
+-    const char *rp = rel_installdir + strlen (rel_installdir);
+-    const char *cp = curr_installdir + strlen (curr_installdir);
+-    const char *cp_base =
+-      curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir);
+-
+-    while (rp > rel_installdir && cp > cp_base)
+-      {
+-	bool same = false;
+-	const char *rpi = rp;
+-	const char *cpi = cp;
+-
+-	while (rpi > rel_installdir && cpi > cp_base)
+-	  {
+-	    rpi--;
+-	    cpi--;
+-	    if (ISSLASH (*rpi) || ISSLASH (*cpi))
+-	      {
+-		if (ISSLASH (*rpi) && ISSLASH (*cpi))
+-		  same = true;
+-		break;
+-	      }
+-	    /* Do case-insensitive comparison if the filesystem is always or
+-	       often case-insensitive.  It's better to accept the comparison
+-	       if the difference is only in case, rather than to fail.  */
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+-	    /* Win32, Cygwin, OS/2, DOS - case insignificant filesystem */
+-	    if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
+-		!= (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
+-	      break;
+-#else
+-	    if (*rpi != *cpi)
+-	      break;
+-#endif
+-	  }
+-	if (!same)
+-	  break;
+-	/* The last pathname component was the same.  opi and cpi now point
+-	   to the slash before it.  */
+-	rp = rpi;
+-	cp = cpi;
+-      }
+-
+-    if (rp > rel_installdir)
+-      /* Unexpected: The curr_installdir does not end with rel_installdir.  */
+-      return NULL;
+-
+-    {
+-      size_t curr_prefix_len = cp - curr_installdir;
+-      char *curr_prefix;
+-
+-      curr_prefix = (char *) xmalloc (curr_prefix_len + 1);
+-#ifdef NO_XMALLOC
+-      if (curr_prefix == NULL)
+-	return NULL;
+-#endif
+-      memcpy (curr_prefix, curr_installdir, curr_prefix_len);
+-      curr_prefix[curr_prefix_len] = '\0';
+-
+-      return curr_prefix;
+-    }
+-  }
+-}
+-
+-#endif /* !IN_LIBRARY || PIC */
+-
+-#if defined PIC && defined INSTALLDIR
+-
+-/* Full pathname of shared library, or NULL.  */
+-static char *shared_library_fullname;
+-
+-#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
+-
+-/* Determine the full pathname of the shared library when it is loaded.  */
+-
+-BOOL WINAPI
+-DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
+-{
+-  (void) reserved;
+-
+-  if (event == DLL_PROCESS_ATTACH)
+-    {
+-      /* The DLL is being loaded into an application's address range.  */
+-      static char location[MAX_PATH];
+-
+-      if (!GetModuleFileName (module_handle, location, sizeof (location)))
+-	/* Shouldn't happen.  */
+-	return FALSE;
+-
+-      if (!IS_PATH_WITH_DIR (location))
+-	/* Shouldn't happen.  */
+-	return FALSE;
+-
+-      {
+-#if defined __CYGWIN__
+-	/* On Cygwin, we need to convert paths coming from Win32 system calls
+-	   to the Unix-like slashified notation.  */
+-	static char location_as_posix_path[2 * MAX_PATH];
+-	/* There's no error return defined for cygwin_conv_to_posix_path.
+-	   See cygwin-api/func-cygwin-conv-to-posix-path.html.
+-	   Does it overflow the buffer of expected size MAX_PATH or does it
+-	   truncate the path?  I don't know.  Let's catch both.  */
+-	cygwin_conv_to_posix_path (location, location_as_posix_path);
+-	location_as_posix_path[MAX_PATH - 1] = '\0';
+-	if (strlen (location_as_posix_path) >= MAX_PATH - 1)
+-	  /* A sign of buffer overflow or path truncation.  */
+-	  return FALSE;
+-	shared_library_fullname = strdup (location_as_posix_path);
+-#else
+-	shared_library_fullname = strdup (location);
+-#endif
+-      }
+-    }
+-
+-  return TRUE;
+-}
+-
+-#else /* Unix except Cygwin */
+-
+-static void
+-find_shared_library_fullname ()
+-{
+-#if defined __linux__ && __GLIBC__ >= 2
+-  /* Linux has /proc/self/maps. glibc 2 has the getline() function.  */
+-  FILE *fp;
+-
+-  /* Open the current process' maps file.  It describes one VMA per line.  */
+-  fp = fopen ("/proc/self/maps", "r");
+-  if (fp)
+-    {
+-      unsigned long address = (unsigned long) &find_shared_library_fullname;
+-      for (;;)
+-	{
+-	  unsigned long start, end;
+-	  int c;
+-
+-	  if (fscanf (fp, "%lx-%lx", &start, &end) != 2)
+-	    break;
+-	  if (address >= start && address <= end - 1)
+-	    {
+-	      /* Found it.  Now see if this line contains a filename.  */
+-	      while (c = getc (fp), c != EOF && c != '\n' && c != '/')
+-		continue;
+-	      if (c == '/')
+-		{
+-		  size_t size;
+-		  int len;
+-
+-		  ungetc (c, fp);
+-		  shared_library_fullname = NULL; size = 0;
+-		  len = getline (&shared_library_fullname, &size, fp);
+-		  if (len >= 0)
+-		    {
+-		      /* Success: filled shared_library_fullname.  */
+-		      if (len > 0 && shared_library_fullname[len - 1] == '\n')
+-			shared_library_fullname[len - 1] = '\0';
+-		    }
+-		}
+-	      break;
+-	    }
+-	  while (c = getc (fp), c != EOF && c != '\n')
+-	    continue;
+-	}
+-      fclose (fp);
+-    }
+-#endif
+-}
+-
+-#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
+-
+-/* Return the full pathname of the current shared library.
+-   Return NULL if unknown.
+-   Guaranteed to work only on Linux, Cygwin and Woe32.  */
+-static char *
+-get_shared_library_fullname ()
+-{
+-#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
+-  static bool tried_find_shared_library_fullname;
+-  if (!tried_find_shared_library_fullname)
+-    {
+-      find_shared_library_fullname ();
+-      tried_find_shared_library_fullname = true;
+-    }
+-#endif
+-  return shared_library_fullname;
+-}
+-
+-#endif /* PIC */
+-
+-/* Returns the pathname, relocated according to the current installation
+-   directory.  */
+-const char *
+-relocate (const char *pathname)
+-{
+-#if defined PIC && defined INSTALLDIR
+-  static int initialized;
+-
+-  /* Initialization code for a shared library.  */
+-  if (!initialized)
+-    {
+-      /* At this point, orig_prefix and curr_prefix likely have already been
+-	 set through the main program's set_program_name_and_installdir
+-	 function.  This is sufficient in the case that the library has
+-	 initially been installed in the same orig_prefix.  But we can do
+-	 better, to also cover the cases that 1. it has been installed
+-	 in a different prefix before being moved to orig_prefix and (later)
+-	 to curr_prefix, 2. unlike the program, it has not moved away from
+-	 orig_prefix.  */
+-      const char *orig_installprefix = INSTALLPREFIX;
+-      const char *orig_installdir = INSTALLDIR;
+-      const char *curr_prefix_better;
+-
+-      curr_prefix_better =
+-	compute_curr_prefix (orig_installprefix, orig_installdir,
+-			     get_shared_library_fullname ());
+-      if (curr_prefix_better == NULL)
+-	curr_prefix_better = curr_prefix;
+-
+-      set_relocation_prefix (orig_installprefix, curr_prefix_better);
+-
+-      initialized = 1;
+-    }
+-#endif
+-
+-  /* Note: It is not necessary to perform case insensitive comparison here,
+-     even for DOS-like filesystems, because the pathname argument was
+-     typically created from the same Makefile variable as orig_prefix came
+-     from.  */
+-  if (orig_prefix != NULL && curr_prefix != NULL
+-      && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
+-    {
+-      if (pathname[orig_prefix_len] == '\0')
+-	/* pathname equals orig_prefix.  */
+-	return curr_prefix;
+-      if (ISSLASH (pathname[orig_prefix_len]))
+-	{
+-	  /* pathname starts with orig_prefix.  */
+-	  const char *pathname_tail = &pathname[orig_prefix_len];
+-	  char *result =
+-	    (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
+-
+-#ifdef NO_XMALLOC
+-	  if (result != NULL)
+-#endif
+-	    {
+-	      memcpy (result, curr_prefix, curr_prefix_len);
+-	      strcpy (result + curr_prefix_len, pathname_tail);
+-	      return result;
+-	    }
+-	}
+-    }
+-  /* Nothing to relocate.  */
+-  return pathname;
+-}
+-
+-#endif
+--- a/intl/relocatable.h
++++ /dev/null
+@@ -1,79 +0,0 @@
+-/* Provide relocatable packages.
+-   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+-   Written by Bruno Haible <bruno@clisp.org>, 2003.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _RELOCATABLE_H
+-#define _RELOCATABLE_H
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-
+-/* This can be enabled through the configure --enable-relocatable option.  */
+-#if ENABLE_RELOCATABLE
+-
+-/* When building a DLL, we must export some functions.  Note that because
+-   this is a private .h file, we don't need to use __declspec(dllimport)
+-   in any case.  */
+-#if HAVE_VISIBILITY && BUILDING_DLL
+-# define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default")))
+-#elif defined _MSC_VER && BUILDING_DLL
+-# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
+-#else
+-# define RELOCATABLE_DLL_EXPORTED
+-#endif
+-
+-/* Sets the original and the current installation prefix of the package.
+-   Relocation simply replaces a pathname starting with the original prefix
+-   by the corresponding pathname with the current prefix instead.  Both
+-   prefixes should be directory names without trailing slash (i.e. use ""
+-   instead of "/").  */
+-extern RELOCATABLE_DLL_EXPORTED void
+-       set_relocation_prefix (const char *orig_prefix,
+-			      const char *curr_prefix);
+-
+-/* Returns the pathname, relocated according to the current installation
+-   directory.  */
+-extern const char * relocate (const char *pathname);
+-
+-/* Memory management: relocate() leaks memory, because it has to construct
+-   a fresh pathname.  If this is a problem because your program calls
+-   relocate() frequently, think about caching the result.  */
+-
+-/* Convenience function:
+-   Computes the current installation prefix, based on the original
+-   installation prefix, the original installation directory of a particular
+-   file, and the current pathname of this file.  Returns NULL upon failure.  */
+-extern const char * compute_curr_prefix (const char *orig_installprefix,
+-					 const char *orig_installdir,
+-					 const char *curr_pathname);
+-
+-#else
+-
+-/* By default, we use the hardwired pathnames.  */
+-#define relocate(pathname) (pathname)
+-
+-#endif
+-
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* _RELOCATABLE_H */
+--- a/intl/textdomain.c
++++ /dev/null
+@@ -1,127 +0,0 @@
+-/* Implementation of the textdomain(3) function.
+-   Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#include "gettextP.h"
+-#ifdef _LIBC
+-# include <libintl.h>
+-#else
+-# include "libgnuintl.h"
+-#endif
+-
+-/* Handle multi-threaded applications.  */
+-#ifdef _LIBC
+-# include <bits/libc-lock.h>
+-# define gl_rwlock_define __libc_rwlock_define
+-# define gl_rwlock_wrlock __libc_rwlock_wrlock
+-# define gl_rwlock_unlock __libc_rwlock_unlock
+-#else
+-# include "lock.h"
+-#endif
+-
+-/* @@ end of prolog @@ */
+-
+-
+-/* Names for the libintl functions are a problem.  They must not clash
+-   with existing names and they should follow ANSI C.  But this source
+-   code is also used in GNU C Library where the names have a __
+-   prefix.  So we have to make a difference here.  */
+-#ifdef _LIBC
+-# define TEXTDOMAIN __textdomain
+-# ifndef strdup
+-#  define strdup(str) __strdup (str)
+-# endif
+-#else
+-# define TEXTDOMAIN libintl_textdomain
+-#endif
+-
+-/* Lock variable to protect the global data in the gettext implementation.  */
+-gl_rwlock_define (extern, _nl_state_lock attribute_hidden)
+-
+-/* Set the current default message catalog to DOMAINNAME.
+-   If DOMAINNAME is null, return the current default.
+-   If DOMAINNAME is "", reset to the default of "messages".  */
+-char *
+-TEXTDOMAIN (const char *domainname)
+-{
+-  char *new_domain;
+-  char *old_domain;
+-
+-  /* A NULL pointer requests the current setting.  */
+-  if (domainname == NULL)
+-    return (char *) _nl_current_default_domain;
+-
+-  gl_rwlock_wrlock (_nl_state_lock);
+-
+-  old_domain = (char *) _nl_current_default_domain;
+-
+-  /* If domain name is the null string set to default domain "messages".  */
+-  if (domainname[0] == '\0'
+-      || strcmp (domainname, _nl_default_default_domain) == 0)
+-    {
+-      _nl_current_default_domain = _nl_default_default_domain;
+-      new_domain = (char *) _nl_current_default_domain;
+-    }
+-  else if (strcmp (domainname, old_domain) == 0)
+-    /* This can happen and people will use it to signal that some
+-       environment variable changed.  */
+-    new_domain = old_domain;
+-  else
+-    {
+-      /* If the following malloc fails `_nl_current_default_domain'
+-	 will be NULL.  This value will be returned and so signals we
+-	 are out of core.  */
+-#if defined _LIBC || defined HAVE_STRDUP
+-      new_domain = strdup (domainname);
+-#else
+-      size_t len = strlen (domainname) + 1;
+-      new_domain = (char *) malloc (len);
+-      if (new_domain != NULL)
+-	memcpy (new_domain, domainname, len);
+-#endif
+-
+-      if (new_domain != NULL)
+-	_nl_current_default_domain = new_domain;
+-    }
+-
+-  /* We use this possibility to signal a change of the loaded catalogs
+-     since this is most likely the case and there is no other easy we
+-     to do it.  Do it only when the call was successful.  */
+-  if (new_domain != NULL)
+-    {
+-      ++_nl_msg_cat_cntr;
+-
+-      if (old_domain != new_domain && old_domain != _nl_default_default_domain)
+-	free (old_domain);
+-    }
+-
+-  gl_rwlock_unlock (_nl_state_lock);
+-
+-  return new_domain;
+-}
+-
+-#ifdef _LIBC
+-/* Alias for function name in GNU C Library.  */
+-weak_alias (__textdomain, textdomain);
+-#endif
+--- a/intl/tsearch.c
++++ /dev/null
+@@ -1,684 +0,0 @@
+-/* Copyright (C) 1995, 1996, 1997, 2000, 2006 Free Software Foundation, Inc.
+-   Contributed by Bernd Schmidt <crux@Pool.Informatik.RWTH-Aachen.DE>, 1997.
+-
+-   NOTE: The canonical source of this file is maintained with the GNU C
+-   Library.  Bugs can be reported to bug-glibc@gnu.org.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* Tree search for red/black trees.
+-   The algorithm for adding nodes is taken from one of the many "Algorithms"
+-   books by Robert Sedgewick, although the implementation differs.
+-   The algorithm for deleting nodes can probably be found in a book named
+-   "Introduction to Algorithms" by Cormen/Leiserson/Rivest.  At least that's
+-   the book that my professor took most algorithms from during the "Data
+-   Structures" course...
+-
+-   Totally public domain.  */
+-
+-/* Red/black trees are binary trees in which the edges are colored either red
+-   or black.  They have the following properties:
+-   1. The number of black edges on every path from the root to a leaf is
+-      constant.
+-   2. No two red edges are adjacent.
+-   Therefore there is an upper bound on the length of every path, it's
+-   O(log n) where n is the number of nodes in the tree.  No path can be longer
+-   than 1+2*P where P is the length of the shortest path in the tree.
+-   Useful for the implementation:
+-   3. If one of the children of a node is NULL, then the other one is red
+-      (if it exists).
+-
+-   In the implementation, not the edges are colored, but the nodes.  The color
+-   interpreted as the color of the edge leading to this node.  The color is
+-   meaningless for the root node, but we color the root node black for
+-   convenience.  All added nodes are red initially.
+-
+-   Adding to a red/black tree is rather easy.  The right place is searched
+-   with a usual binary tree search.  Additionally, whenever a node N is
+-   reached that has two red successors, the successors are colored black and
+-   the node itself colored red.  This moves red edges up the tree where they
+-   pose less of a problem once we get to really insert the new node.  Changing
+-   N's color to red may violate rule 2, however, so rotations may become
+-   necessary to restore the invariants.  Adding a new red leaf may violate
+-   the same rule, so afterwards an additional check is run and the tree
+-   possibly rotated.
+-
+-   Deleting is hairy.  There are mainly two nodes involved: the node to be
+-   deleted (n1), and another node that is to be unchained from the tree (n2).
+-   If n1 has a successor (the node with a smallest key that is larger than
+-   n1), then the successor becomes n2 and its contents are copied into n1,
+-   otherwise n1 becomes n2.
+-   Unchaining a node may violate rule 1: if n2 is black, one subtree is
+-   missing one black edge afterwards.  The algorithm must try to move this
+-   error upwards towards the root, so that the subtree that does not have
+-   enough black edges becomes the whole tree.  Once that happens, the error
+-   has disappeared.  It may not be necessary to go all the way up, since it
+-   is possible that rotations and recoloring can fix the error before that.
+-
+-   Although the deletion algorithm must walk upwards through the tree, we
+-   do not store parent pointers in the nodes.  Instead, delete allocates a
+-   small array of parent pointers and fills it while descending the tree.
+-   Since we know that the length of a path is O(log n), where n is the number
+-   of nodes, this is likely to use less memory.  */
+-
+-/* Tree rotations look like this:
+-      A                C
+-     / \              / \
+-    B   C            A   G
+-   / \ / \  -->     / \
+-   D E F G         B   F
+-                  / \
+-                 D   E
+-
+-   In this case, A has been rotated left.  This preserves the ordering of the
+-   binary tree.  */
+-
+-#include <config.h>
+-
+-/* Specification.  */
+-#ifdef IN_LIBINTL
+-# include "tsearch.h"
+-#else
+-# include <search.h>
+-#endif
+-
+-#include <stdlib.h>
+-
+-typedef int (*__compar_fn_t) (const void *, const void *);
+-typedef void (*__action_fn_t) (const void *, VISIT, int);
+-
+-#ifndef weak_alias
+-# define __tsearch tsearch
+-# define __tfind tfind
+-# define __tdelete tdelete
+-# define __twalk twalk
+-#endif
+-
+-#ifndef internal_function
+-/* Inside GNU libc we mark some function in a special way.  In other
+-   environments simply ignore the marking.  */
+-# define internal_function
+-#endif
+-
+-typedef struct node_t
+-{
+-  /* Callers expect this to be the first element in the structure - do not
+-     move!  */
+-  const void *key;
+-  struct node_t *left;
+-  struct node_t *right;
+-  unsigned int red:1;
+-} *node;
+-typedef const struct node_t *const_node;
+-
+-#undef DEBUGGING
+-
+-#ifdef DEBUGGING
+-
+-/* Routines to check tree invariants.  */
+-
+-#include <assert.h>
+-
+-#define CHECK_TREE(a) check_tree(a)
+-
+-static void
+-check_tree_recurse (node p, int d_sofar, int d_total)
+-{
+-  if (p == NULL)
+-    {
+-      assert (d_sofar == d_total);
+-      return;
+-    }
+-
+-  check_tree_recurse (p->left, d_sofar + (p->left && !p->left->red), d_total);
+-  check_tree_recurse (p->right, d_sofar + (p->right && !p->right->red), d_total);
+-  if (p->left)
+-    assert (!(p->left->red && p->red));
+-  if (p->right)
+-    assert (!(p->right->red && p->red));
+-}
+-
+-static void
+-check_tree (node root)
+-{
+-  int cnt = 0;
+-  node p;
+-  if (root == NULL)
+-    return;
+-  root->red = 0;
+-  for(p = root->left; p; p = p->left)
+-    cnt += !p->red;
+-  check_tree_recurse (root, 0, cnt);
+-}
+-
+-
+-#else
+-
+-#define CHECK_TREE(a)
+-
+-#endif
+-
+-/* Possibly "split" a node with two red successors, and/or fix up two red
+-   edges in a row.  ROOTP is a pointer to the lowest node we visited, PARENTP
+-   and GPARENTP pointers to its parent/grandparent.  P_R and GP_R contain the
+-   comparison values that determined which way was taken in the tree to reach
+-   ROOTP.  MODE is 1 if we need not do the split, but must check for two red
+-   edges between GPARENTP and ROOTP.  */
+-static void
+-maybe_split_for_insert (node *rootp, node *parentp, node *gparentp,
+-			int p_r, int gp_r, int mode)
+-{
+-  node root = *rootp;
+-  node *rp, *lp;
+-  rp = &(*rootp)->right;
+-  lp = &(*rootp)->left;
+-
+-  /* See if we have to split this node (both successors red).  */
+-  if (mode == 1
+-      || ((*rp) != NULL && (*lp) != NULL && (*rp)->red && (*lp)->red))
+-    {
+-      /* This node becomes red, its successors black.  */
+-      root->red = 1;
+-      if (*rp)
+-	(*rp)->red = 0;
+-      if (*lp)
+-	(*lp)->red = 0;
+-
+-      /* If the parent of this node is also red, we have to do
+-	 rotations.  */
+-      if (parentp != NULL && (*parentp)->red)
+-	{
+-	  node gp = *gparentp;
+-	  node p = *parentp;
+-	  /* There are two main cases:
+-	     1. The edge types (left or right) of the two red edges differ.
+-	     2. Both red edges are of the same type.
+-	     There exist two symmetries of each case, so there is a total of
+-	     4 cases.  */
+-	  if ((p_r > 0) != (gp_r > 0))
+-	    {
+-	      /* Put the child at the top of the tree, with its parent
+-		 and grandparent as successors.  */
+-	      p->red = 1;
+-	      gp->red = 1;
+-	      root->red = 0;
+-	      if (p_r < 0)
+-		{
+-		  /* Child is left of parent.  */
+-		  p->left = *rp;
+-		  *rp = p;
+-		  gp->right = *lp;
+-		  *lp = gp;
+-		}
+-	      else
+-		{
+-		  /* Child is right of parent.  */
+-		  p->right = *lp;
+-		  *lp = p;
+-		  gp->left = *rp;
+-		  *rp = gp;
+-		}
+-	      *gparentp = root;
+-	    }
+-	  else
+-	    {
+-	      *gparentp = *parentp;
+-	      /* Parent becomes the top of the tree, grandparent and
+-		 child are its successors.  */
+-	      p->red = 0;
+-	      gp->red = 1;
+-	      if (p_r < 0)
+-		{
+-		  /* Left edges.  */
+-		  gp->left = p->right;
+-		  p->right = gp;
+-		}
+-	      else
+-		{
+-		  /* Right edges.  */
+-		  gp->right = p->left;
+-		  p->left = gp;
+-		}
+-	    }
+-	}
+-    }
+-}
+-
+-/* Find or insert datum into search tree.
+-   KEY is the key to be located, ROOTP is the address of tree root,
+-   COMPAR the ordering function.  */
+-void *
+-__tsearch (const void *key, void **vrootp, __compar_fn_t compar)
+-{
+-  node q;
+-  node *parentp = NULL, *gparentp = NULL;
+-  node *rootp = (node *) vrootp;
+-  node *nextp;
+-  int r = 0, p_r = 0, gp_r = 0; /* No they might not, Mr Compiler.  */
+-
+-  if (rootp == NULL)
+-    return NULL;
+-
+-  /* This saves some additional tests below.  */
+-  if (*rootp != NULL)
+-    (*rootp)->red = 0;
+-
+-  CHECK_TREE (*rootp);
+-
+-  nextp = rootp;
+-  while (*nextp != NULL)
+-    {
+-      node root = *rootp;
+-      r = (*compar) (key, root->key);
+-      if (r == 0)
+-	return root;
+-
+-      maybe_split_for_insert (rootp, parentp, gparentp, p_r, gp_r, 0);
+-      /* If that did any rotations, parentp and gparentp are now garbage.
+-	 That doesn't matter, because the values they contain are never
+-	 used again in that case.  */
+-
+-      nextp = r < 0 ? &root->left : &root->right;
+-      if (*nextp == NULL)
+-	break;
+-
+-      gparentp = parentp;
+-      parentp = rootp;
+-      rootp = nextp;
+-
+-      gp_r = p_r;
+-      p_r = r;
+-    }
+-
+-  q = (struct node_t *) malloc (sizeof (struct node_t));
+-  if (q != NULL)
+-    {
+-      *nextp = q;			/* link new node to old */
+-      q->key = key;			/* initialize new node */
+-      q->red = 1;
+-      q->left = q->right = NULL;
+-
+-      if (nextp != rootp)
+-	/* There may be two red edges in a row now, which we must avoid by
+-	   rotating the tree.  */
+-	maybe_split_for_insert (nextp, rootp, parentp, r, p_r, 1);
+-    }
+-
+-  return q;
+-}
+-#ifdef weak_alias
+-weak_alias (__tsearch, tsearch)
+-#endif
+-
+-
+-/* Find datum in search tree.
+-   KEY is the key to be located, ROOTP is the address of tree root,
+-   COMPAR the ordering function.  */
+-void *
+-__tfind (key, vrootp, compar)
+-     const void *key;
+-     void *const *vrootp;
+-     __compar_fn_t compar;
+-{
+-  node *rootp = (node *) vrootp;
+-
+-  if (rootp == NULL)
+-    return NULL;
+-
+-  CHECK_TREE (*rootp);
+-
+-  while (*rootp != NULL)
+-    {
+-      node root = *rootp;
+-      int r;
+-
+-      r = (*compar) (key, root->key);
+-      if (r == 0)
+-	return root;
+-
+-      rootp = r < 0 ? &root->left : &root->right;
+-    }
+-  return NULL;
+-}
+-#ifdef weak_alias
+-weak_alias (__tfind, tfind)
+-#endif
+-
+-
+-/* Delete node with given key.
+-   KEY is the key to be deleted, ROOTP is the address of the root of tree,
+-   COMPAR the comparison function.  */
+-void *
+-__tdelete (const void *key, void **vrootp, __compar_fn_t compar)
+-{
+-  node p, q, r, retval;
+-  int cmp;
+-  node *rootp = (node *) vrootp;
+-  node root, unchained;
+-  /* Stack of nodes so we remember the parents without recursion.  It's
+-     _very_ unlikely that there are paths longer than 40 nodes.  The tree
+-     would need to have around 250.000 nodes.  */
+-  int stacksize = 100;
+-  int sp = 0;
+-  node *nodestack[100];
+-
+-  if (rootp == NULL)
+-    return NULL;
+-  p = *rootp;
+-  if (p == NULL)
+-    return NULL;
+-
+-  CHECK_TREE (p);
+-
+-  while ((cmp = (*compar) (key, (*rootp)->key)) != 0)
+-    {
+-      if (sp == stacksize)
+-	abort ();
+-
+-      nodestack[sp++] = rootp;
+-      p = *rootp;
+-      rootp = ((cmp < 0)
+-	       ? &(*rootp)->left
+-	       : &(*rootp)->right);
+-      if (*rootp == NULL)
+-	return NULL;
+-    }
+-
+-  /* This is bogus if the node to be deleted is the root... this routine
+-     really should return an integer with 0 for success, -1 for failure
+-     and errno = ESRCH or something.  */
+-  retval = p;
+-
+-  /* We don't unchain the node we want to delete. Instead, we overwrite
+-     it with its successor and unchain the successor.  If there is no
+-     successor, we really unchain the node to be deleted.  */
+-
+-  root = *rootp;
+-
+-  r = root->right;
+-  q = root->left;
+-
+-  if (q == NULL || r == NULL)
+-    unchained = root;
+-  else
+-    {
+-      node *parent = rootp, *up = &root->right;
+-      for (;;)
+-	{
+-	  if (sp == stacksize)
+-	    abort ();
+-	  nodestack[sp++] = parent;
+-	  parent = up;
+-	  if ((*up)->left == NULL)
+-	    break;
+-	  up = &(*up)->left;
+-	}
+-      unchained = *up;
+-    }
+-
+-  /* We know that either the left or right successor of UNCHAINED is NULL.
+-     R becomes the other one, it is chained into the parent of UNCHAINED.  */
+-  r = unchained->left;
+-  if (r == NULL)
+-    r = unchained->right;
+-  if (sp == 0)
+-    *rootp = r;
+-  else
+-    {
+-      q = *nodestack[sp-1];
+-      if (unchained == q->right)
+-	q->right = r;
+-      else
+-	q->left = r;
+-    }
+-
+-  if (unchained != root)
+-    root->key = unchained->key;
+-  if (!unchained->red)
+-    {
+-      /* Now we lost a black edge, which means that the number of black
+-	 edges on every path is no longer constant.  We must balance the
+-	 tree.  */
+-      /* NODESTACK now contains all parents of R.  R is likely to be NULL
+-	 in the first iteration.  */
+-      /* NULL nodes are considered black throughout - this is necessary for
+-	 correctness.  */
+-      while (sp > 0 && (r == NULL || !r->red))
+-	{
+-	  node *pp = nodestack[sp - 1];
+-	  p = *pp;
+-	  /* Two symmetric cases.  */
+-	  if (r == p->left)
+-	    {
+-	      /* Q is R's brother, P is R's parent.  The subtree with root
+-		 R has one black edge less than the subtree with root Q.  */
+-	      q = p->right;
+-	      if (q->red)
+-		{
+-		  /* If Q is red, we know that P is black. We rotate P left
+-		     so that Q becomes the top node in the tree, with P below
+-		     it.  P is colored red, Q is colored black.
+-		     This action does not change the black edge count for any
+-		     leaf in the tree, but we will be able to recognize one
+-		     of the following situations, which all require that Q
+-		     is black.  */
+-		  q->red = 0;
+-		  p->red = 1;
+-		  /* Left rotate p.  */
+-		  p->right = q->left;
+-		  q->left = p;
+-		  *pp = q;
+-		  /* Make sure pp is right if the case below tries to use
+-		     it.  */
+-		  nodestack[sp++] = pp = &q->left;
+-		  q = p->right;
+-		}
+-	      /* We know that Q can't be NULL here.  We also know that Q is
+-		 black.  */
+-	      if ((q->left == NULL || !q->left->red)
+-		  && (q->right == NULL || !q->right->red))
+-		{
+-		  /* Q has two black successors.  We can simply color Q red.
+-		     The whole subtree with root P is now missing one black
+-		     edge.  Note that this action can temporarily make the
+-		     tree invalid (if P is red).  But we will exit the loop
+-		     in that case and set P black, which both makes the tree
+-		     valid and also makes the black edge count come out
+-		     right.  If P is black, we are at least one step closer
+-		     to the root and we'll try again the next iteration.  */
+-		  q->red = 1;
+-		  r = p;
+-		}
+-	      else
+-		{
+-		  /* Q is black, one of Q's successors is red.  We can
+-		     repair the tree with one operation and will exit the
+-		     loop afterwards.  */
+-		  if (q->right == NULL || !q->right->red)
+-		    {
+-		      /* The left one is red.  We perform the same action as
+-			 in maybe_split_for_insert where two red edges are
+-			 adjacent but point in different directions:
+-			 Q's left successor (let's call it Q2) becomes the
+-			 top of the subtree we are looking at, its parent (Q)
+-			 and grandparent (P) become its successors. The former
+-			 successors of Q2 are placed below P and Q.
+-			 P becomes black, and Q2 gets the color that P had.
+-			 This changes the black edge count only for node R and
+-			 its successors.  */
+-		      node q2 = q->left;
+-		      q2->red = p->red;
+-		      p->right = q2->left;
+-		      q->left = q2->right;
+-		      q2->right = q;
+-		      q2->left = p;
+-		      *pp = q2;
+-		      p->red = 0;
+-		    }
+-		  else
+-		    {
+-		      /* It's the right one.  Rotate P left. P becomes black,
+-			 and Q gets the color that P had.  Q's right successor
+-			 also becomes black.  This changes the black edge
+-			 count only for node R and its successors.  */
+-		      q->red = p->red;
+-		      p->red = 0;
+-
+-		      q->right->red = 0;
+-
+-		      /* left rotate p */
+-		      p->right = q->left;
+-		      q->left = p;
+-		      *pp = q;
+-		    }
+-
+-		  /* We're done.  */
+-		  sp = 1;
+-		  r = NULL;
+-		}
+-	    }
+-	  else
+-	    {
+-	      /* Comments: see above.  */
+-	      q = p->left;
+-	      if (q->red)
+-		{
+-		  q->red = 0;
+-		  p->red = 1;
+-		  p->left = q->right;
+-		  q->right = p;
+-		  *pp = q;
+-		  nodestack[sp++] = pp = &q->right;
+-		  q = p->left;
+-		}
+-	      if ((q->right == NULL || !q->right->red)
+-		       && (q->left == NULL || !q->left->red))
+-		{
+-		  q->red = 1;
+-		  r = p;
+-		}
+-	      else
+-		{
+-		  if (q->left == NULL || !q->left->red)
+-		    {
+-		      node q2 = q->right;
+-		      q2->red = p->red;
+-		      p->left = q2->right;
+-		      q->right = q2->left;
+-		      q2->left = q;
+-		      q2->right = p;
+-		      *pp = q2;
+-		      p->red = 0;
+-		    }
+-		  else
+-		    {
+-		      q->red = p->red;
+-		      p->red = 0;
+-		      q->left->red = 0;
+-		      p->left = q->right;
+-		      q->right = p;
+-		      *pp = q;
+-		    }
+-		  sp = 1;
+-		  r = NULL;
+-		}
+-	    }
+-	  --sp;
+-	}
+-      if (r != NULL)
+-	r->red = 0;
+-    }
+-
+-  free (unchained);
+-  return retval;
+-}
+-#ifdef weak_alias
+-weak_alias (__tdelete, tdelete)
+-#endif
+-
+-
+-/* Walk the nodes of a tree.
+-   ROOT is the root of the tree to be walked, ACTION the function to be
+-   called at each node.  LEVEL is the level of ROOT in the whole tree.  */
+-static void
+-internal_function
+-trecurse (const void *vroot, __action_fn_t action, int level)
+-{
+-  const_node root = (const_node) vroot;
+-
+-  if (root->left == NULL && root->right == NULL)
+-    (*action) (root, leaf, level);
+-  else
+-    {
+-      (*action) (root, preorder, level);
+-      if (root->left != NULL)
+-	trecurse (root->left, action, level + 1);
+-      (*action) (root, postorder, level);
+-      if (root->right != NULL)
+-	trecurse (root->right, action, level + 1);
+-      (*action) (root, endorder, level);
+-    }
+-}
+-
+-
+-/* Walk the nodes of a tree.
+-   ROOT is the root of the tree to be walked, ACTION the function to be
+-   called at each node.  */
+-void
+-__twalk (const void *vroot, __action_fn_t action)
+-{
+-  const_node root = (const_node) vroot;
+-
+-  CHECK_TREE (root);
+-
+-  if (root != NULL && action != NULL)
+-    trecurse (root, action, 0);
+-}
+-#ifdef weak_alias
+-weak_alias (__twalk, twalk)
+-#endif
+-
+-
+-#ifdef _LIBC
+-
+-/* The standardized functions miss an important functionality: the
+-   tree cannot be removed easily.  We provide a function to do this.  */
+-static void
+-internal_function
+-tdestroy_recurse (node root, __free_fn_t freefct)
+-{
+-  if (root->left != NULL)
+-    tdestroy_recurse (root->left, freefct);
+-  if (root->right != NULL)
+-    tdestroy_recurse (root->right, freefct);
+-  (*freefct) ((void *) root->key);
+-  /* Free the node itself.  */
+-  free (root);
+-}
+-
+-void
+-__tdestroy (void *vroot, __free_fn_t freefct)
+-{
+-  node root = (node) vroot;
+-
+-  CHECK_TREE (root);
+-
+-  if (root != NULL)
+-    tdestroy_recurse (root, freefct);
+-}
+-weak_alias (__tdestroy, tdestroy)
+-
+-#endif /* _LIBC */
+--- a/intl/tsearch.h
++++ /dev/null
+@@ -1,83 +0,0 @@
+-/* Binary tree data structure.
+-   Copyright (C) 2006 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _TSEARCH_H
+-#define _TSEARCH_H
+-
+-#if HAVE_TSEARCH
+-
+-/* Get tseach(), tfind(), tdelete(), twalk() declarations.  */
+-#include <search.h>
+-
+-#else
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-/* See <http://www.opengroup.org/susv3xbd/search.h.html>,
+-       <http://www.opengroup.org/susv3xsh/tsearch.html>
+-   for details.  */
+-
+-typedef enum
+-{ 
+-  preorder,
+-  postorder, 
+-  endorder,
+-  leaf
+-}
+-VISIT;
+-
+-/* Searches an element in the tree *VROOTP that compares equal to KEY.
+-   If one is found, it is returned.  Otherwise, a new element equal to KEY
+-   is inserted in the tree and is returned.  */
+-extern void * tsearch (const void *key, void **vrootp,
+-		       int (*compar) (const void *, const void *));
+-
+-/* Searches an element in the tree *VROOTP that compares equal to KEY.
+-   If one is found, it is returned.  Otherwise, NULL is returned.  */
+-extern void * tfind (const void *key, void *const *vrootp,
+-		     int (*compar) (const void *, const void *));
+-
+-/* Searches an element in the tree *VROOTP that compares equal to KEY.
+-   If one is found, it is removed from the tree, and its parent node is
+-   returned.  Otherwise, NULL is returned.  */
+-extern void * tdelete (const void *key, void **vrootp,
+-		       int (*compar) (const void *, const void *));
+-
+-/* Perform a depth-first, left-to-right traversal of the tree VROOT.
+-   The ACTION function is called:
+-     - for non-leaf nodes: 3 times, before the left subtree traversal,
+-       after the left subtree traversal but before the right subtree traversal,
+-       and after the right subtree traversal,
+-     - for leaf nodes: once.
+-   The arguments passed to ACTION are:
+-     1. the node; it can be casted to a 'const void * const *', i.e. into a
+-        pointer to the key,
+-     2. an indicator which visit of the node this is,
+-     3. the level of the node in the tree (0 for the root).  */
+-extern void twalk (const void *vroot,
+-		   void (*action) (const void *, VISIT, int));
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif
+-
+-#endif /* _TSEARCH_H */
+--- a/intl/vasnprintf.c
++++ /dev/null
+@@ -1,4677 +0,0 @@
+-/* vsprintf with automatic memory allocation.
+-   Copyright (C) 1999, 2002-2007 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-/* This file can be parametrized with the following macros:
+-     VASNPRINTF         The name of the function being defined.
+-     FCHAR_T            The element type of the format string.
+-     DCHAR_T            The element type of the destination (result) string.
+-     FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters
+-                        in the format string are ASCII. MUST be set if
+-                        FCHAR_T and DCHAR_T are not the same type.
+-     DIRECTIVE          Structure denoting a format directive.
+-                        Depends on FCHAR_T.
+-     DIRECTIVES         Structure denoting the set of format directives of a
+-                        format string.  Depends on FCHAR_T.
+-     PRINTF_PARSE       Function that parses a format string.
+-                        Depends on FCHAR_T.
+-     DCHAR_CPY          memcpy like function for DCHAR_T[] arrays.
+-     DCHAR_SET          memset like function for DCHAR_T[] arrays.
+-     DCHAR_MBSNLEN      mbsnlen like function for DCHAR_T[] arrays.
+-     SNPRINTF           The system's snprintf (or similar) function.
+-                        This may be either snprintf or swprintf.
+-     TCHAR_T            The element type of the argument and result string
+-                        of the said SNPRINTF function.  This may be either
+-                        char or wchar_t.  The code exploits that
+-                        sizeof (TCHAR_T) | sizeof (DCHAR_T) and
+-                        alignof (TCHAR_T) <= alignof (DCHAR_T).
+-     DCHAR_IS_TCHAR     Set to 1 if DCHAR_T and TCHAR_T are the same type.
+-     DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[].
+-     DCHAR_IS_UINT8_T   Set to 1 if DCHAR_T is uint8_t.
+-     DCHAR_IS_UINT16_T  Set to 1 if DCHAR_T is uint16_t.
+-     DCHAR_IS_UINT32_T  Set to 1 if DCHAR_T is uint32_t.  */
+-
+-/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+-   This must come before <config.h> because <config.h> may include
+-   <features.h>, and once <features.h> has been included, it's too late.  */
+-#ifndef _GNU_SOURCE
+-# define _GNU_SOURCE    1
+-#endif
+-
+-#ifndef VASNPRINTF
+-# include <config.h>
+-#endif
+-#ifndef IN_LIBINTL
+-# include <alloca.h>
+-#endif
+-
+-/* Specification.  */
+-#ifndef VASNPRINTF
+-# if WIDE_CHAR_VERSION
+-#  include "vasnwprintf.h"
+-# else
+-#  include "vasnprintf.h"
+-# endif
+-#endif
+-
+-#include <locale.h>	/* localeconv() */
+-#include <stdio.h>	/* snprintf(), sprintf() */
+-#include <stdlib.h>	/* abort(), malloc(), realloc(), free() */
+-#include <string.h>	/* memcpy(), strlen() */
+-#include <errno.h>	/* errno */
+-#include <limits.h>	/* CHAR_BIT */
+-#include <float.h>	/* DBL_MAX_EXP, LDBL_MAX_EXP */
+-#if HAVE_NL_LANGINFO
+-# include <langinfo.h>
+-#endif
+-#ifndef VASNPRINTF
+-# if WIDE_CHAR_VERSION
+-#  include "wprintf-parse.h"
+-# else
+-#  include "printf-parse.h"
+-# endif
+-#endif
+-
+-/* Checked size_t computations.  */
+-#include "xsize.h"
+-
+-#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+-# include <math.h>
+-# include "float+.h"
+-#endif
+-
+-#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
+-# include <math.h>
+-# include "isnan.h"
+-#endif
+-
+-#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL
+-# include <math.h>
+-# include "isnanl-nolibm.h"
+-# include "fpucw.h"
+-#endif
+-
+-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+-# include <math.h>
+-# include "isnan.h"
+-# include "printf-frexp.h"
+-#endif
+-
+-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+-# include <math.h>
+-# include "isnanl-nolibm.h"
+-# include "printf-frexpl.h"
+-# include "fpucw.h"
+-#endif
+-
+-/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW.  */
+-#ifndef EOVERFLOW
+-# define EOVERFLOW E2BIG
+-#endif
+-
+-#if HAVE_WCHAR_T
+-# if HAVE_WCSLEN
+-#  define local_wcslen wcslen
+-# else
+-   /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
+-      a dependency towards this library, here is a local substitute.
+-      Define this substitute only once, even if this file is included
+-      twice in the same compilation unit.  */
+-#  ifndef local_wcslen_defined
+-#   define local_wcslen_defined 1
+-static size_t
+-local_wcslen (const wchar_t *s)
+-{
+-  const wchar_t *ptr;
+-
+-  for (ptr = s; *ptr != (wchar_t) 0; ptr++)
+-    ;
+-  return ptr - s;
+-}
+-#  endif
+-# endif
+-#endif
+-
+-/* Default parameters.  */
+-#ifndef VASNPRINTF
+-# if WIDE_CHAR_VERSION
+-#  define VASNPRINTF vasnwprintf
+-#  define FCHAR_T wchar_t
+-#  define DCHAR_T wchar_t
+-#  define TCHAR_T wchar_t
+-#  define DCHAR_IS_TCHAR 1
+-#  define DIRECTIVE wchar_t_directive
+-#  define DIRECTIVES wchar_t_directives
+-#  define PRINTF_PARSE wprintf_parse
+-#  define DCHAR_CPY wmemcpy
+-# else
+-#  define VASNPRINTF vasnprintf
+-#  define FCHAR_T char
+-#  define DCHAR_T char
+-#  define TCHAR_T char
+-#  define DCHAR_IS_TCHAR 1
+-#  define DIRECTIVE char_directive
+-#  define DIRECTIVES char_directives
+-#  define PRINTF_PARSE printf_parse
+-#  define DCHAR_CPY memcpy
+-# endif
+-#endif
+-#if WIDE_CHAR_VERSION
+-  /* TCHAR_T is wchar_t.  */
+-# define USE_SNPRINTF 1
+-# if HAVE_DECL__SNWPRINTF
+-   /* On Windows, the function swprintf() has a different signature than
+-      on Unix; we use the _snwprintf() function instead.  */
+-#  define SNPRINTF _snwprintf
+-# else
+-   /* Unix.  */
+-#  define SNPRINTF swprintf
+-# endif
+-#else
+-  /* TCHAR_T is char.  */
+-# /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'.
+-     But don't use it on BeOS, since BeOS snprintf produces no output if the
+-     size argument is >= 0x3000000.  */
+-# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__
+-#  define USE_SNPRINTF 1
+-# else
+-#  define USE_SNPRINTF 0
+-# endif
+-# if HAVE_DECL__SNPRINTF
+-   /* Windows.  */
+-#  define SNPRINTF _snprintf
+-# else
+-   /* Unix.  */
+-#  define SNPRINTF snprintf
+-   /* Here we need to call the native snprintf, not rpl_snprintf.  */
+-#  undef snprintf
+-# endif
+-#endif
+-/* Here we need to call the native sprintf, not rpl_sprintf.  */
+-#undef sprintf
+-
+-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL
+-/* Determine the decimal-point character according to the current locale.  */
+-# ifndef decimal_point_char_defined
+-#  define decimal_point_char_defined 1
+-static char
+-decimal_point_char ()
+-{
+-  const char *point;
+-  /* Determine it in a multithread-safe way.  We know nl_langinfo is
+-     multithread-safe on glibc systems, but is not required to be multithread-
+-     safe by POSIX.  sprintf(), however, is multithread-safe.  localeconv()
+-     is rarely multithread-safe.  */
+-#  if HAVE_NL_LANGINFO && __GLIBC__
+-  point = nl_langinfo (RADIXCHAR);
+-#  elif 1
+-  char pointbuf[5];
+-  sprintf (pointbuf, "%#.0f", 1.0);
+-  point = &pointbuf[1];
+-#  else
+-  point = localeconv () -> decimal_point;
+-#  endif
+-  /* The decimal point is always a single byte: either '.' or ','.  */
+-  return (point[0] != '\0' ? point[0] : '.');
+-}
+-# endif
+-#endif
+-
+-#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL
+-
+-/* Equivalent to !isfinite(x) || x == 0, but does not require libm.  */
+-static int
+-is_infinite_or_zero (double x)
+-{
+-  return isnan (x) || x + x == x;
+-}
+-
+-#endif
+-
+-#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL
+-
+-/* Equivalent to !isfinite(x), but does not require libm.  */
+-static int
+-is_infinitel (long double x)
+-{
+-  return isnanl (x) || (x + x == x && x != 0.0L);
+-}
+-
+-#endif
+-
+-#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+-
+-/* Converting 'long double' to decimal without rare rounding bugs requires
+-   real bignums.  We use the naming conventions of GNU gmp, but vastly simpler
+-   (and slower) algorithms.  */
+-
+-typedef unsigned int mp_limb_t;
+-# define GMP_LIMB_BITS 32
+-typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1];
+-
+-typedef unsigned long long mp_twolimb_t;
+-# define GMP_TWOLIMB_BITS 64
+-typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1];
+-
+-/* Representation of a bignum >= 0.  */
+-typedef struct
+-{
+-  size_t nlimbs;
+-  mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc().  */
+-} mpn_t;
+-
+-/* Compute the product of two bignums >= 0.
+-   Return the allocated memory in case of success, NULL in case of memory
+-   allocation failure.  */
+-static void *
+-multiply (mpn_t src1, mpn_t src2, mpn_t *dest)
+-{
+-  const mp_limb_t *p1;
+-  const mp_limb_t *p2;
+-  size_t len1;
+-  size_t len2;
+-
+-  if (src1.nlimbs <= src2.nlimbs)
+-    {
+-      len1 = src1.nlimbs;
+-      p1 = src1.limbs;
+-      len2 = src2.nlimbs;
+-      p2 = src2.limbs;
+-    }
+-  else
+-    {
+-      len1 = src2.nlimbs;
+-      p1 = src2.limbs;
+-      len2 = src1.nlimbs;
+-      p2 = src1.limbs;
+-    }
+-  /* Now 0 <= len1 <= len2.  */
+-  if (len1 == 0)
+-    {
+-      /* src1 or src2 is zero.  */
+-      dest->nlimbs = 0;
+-      dest->limbs = (mp_limb_t *) malloc (1);
+-    }
+-  else
+-    {
+-      /* Here 1 <= len1 <= len2.  */
+-      size_t dlen;
+-      mp_limb_t *dp;
+-      size_t k, i, j;
+-
+-      dlen = len1 + len2;
+-      dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t));
+-      if (dp == NULL)
+-	return NULL;
+-      for (k = len2; k > 0; )
+-	dp[--k] = 0;
+-      for (i = 0; i < len1; i++)
+-	{
+-	  mp_limb_t digit1 = p1[i];
+-	  mp_twolimb_t carry = 0;
+-	  for (j = 0; j < len2; j++)
+-	    {
+-	      mp_limb_t digit2 = p2[j];
+-	      carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+-	      carry += dp[i + j];
+-	      dp[i + j] = (mp_limb_t) carry;
+-	      carry = carry >> GMP_LIMB_BITS;
+-	    }
+-	  dp[i + len2] = (mp_limb_t) carry;
+-	}
+-      /* Normalise.  */
+-      while (dlen > 0 && dp[dlen - 1] == 0)
+-	dlen--;
+-      dest->nlimbs = dlen;
+-      dest->limbs = dp;
+-    }
+-  return dest->limbs;
+-}
+-
+-/* Compute the quotient of a bignum a >= 0 and a bignum b > 0.
+-   a is written as  a = q * b + r  with 0 <= r < b.  q is the quotient, r
+-   the remainder.
+-   Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd,
+-   q is incremented.
+-   Return the allocated memory in case of success, NULL in case of memory
+-   allocation failure.  */
+-static void *
+-divide (mpn_t a, mpn_t b, mpn_t *q)
+-{
+-  /* Algorithm:
+-     First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]]
+-     with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS).
+-     If m<n, then q:=0 and r:=a.
+-     If m>=n=1, perform a single-precision division:
+-       r:=0, j:=m,
+-       while j>0 do
+-         {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j =
+-               = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r<b[0]<beta}
+-         j:=j-1, r:=r*beta+a[j], q[j]:=floor(r/b[0]), r:=r-b[0]*q[j].
+-       Normalise [q[m-1],...,q[0]], yields q.
+-     If m>=n>1, perform a multiple-precision division:
+-       We have a/b < beta^(m-n+1).
+-       s:=intDsize-1-(hightest bit in b[n-1]), 0<=s<intDsize.
+-       Shift a and b left by s bits, copying them. r:=a.
+-       r=[r[m],...,r[0]], b=[b[n-1],...,b[0]] with b[n-1]>=beta/2.
+-       For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).}
+-         Compute q* :
+-           q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]).
+-           In case of overflow (q* >= beta) set q* := beta-1.
+-           Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2]
+-           and c3 := b[n-2] * q*.
+-           {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow
+-            occurred.  Furthermore 0 <= c3 < beta^2.
+-            If there was overflow and
+-            r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2,
+-            the next test can be skipped.}
+-           While c3 > c2, {Here 0 <= c2 < c3 < beta^2}
+-             Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2].
+-           If q* > 0:
+-             Put r := r - b * q* * beta^j. In detail:
+-               [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]].
+-               hence: u:=0, for i:=0 to n-1 do
+-                              u := u + q* * b[i],
+-                              r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry),
+-                              u:=u div beta (+ 1, if carry in subtraction)
+-                      r[n+j]:=r[n+j]-u.
+-               {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1
+-                               < q* + 1 <= beta,
+-                the carry u does not overflow.}
+-             If a negative carry occurs, put q* := q* - 1
+-               and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]].
+-         Set q[j] := q*.
+-       Normalise [q[m-n],..,q[0]]; this yields the quotient q.
+-       Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the
+-       rest r.
+-       The room for q[j] can be allocated at the memory location of r[n+j].
+-     Finally, round-to-even:
+-       Shift r left by 1 bit.
+-       If r > b or if r = b and q[0] is odd, q := q+1.
+-   */
+-  const mp_limb_t *a_ptr = a.limbs;
+-  size_t a_len = a.nlimbs;
+-  const mp_limb_t *b_ptr = b.limbs;
+-  size_t b_len = b.nlimbs;
+-  mp_limb_t *roomptr;
+-  mp_limb_t *tmp_roomptr = NULL;
+-  mp_limb_t *q_ptr;
+-  size_t q_len;
+-  mp_limb_t *r_ptr;
+-  size_t r_len;
+-
+-  /* Allocate room for a_len+2 digits.
+-     (Need a_len+1 digits for the real division and 1 more digit for the
+-     final rounding of q.)  */
+-  roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t));
+-  if (roomptr == NULL)
+-    return NULL;
+-
+-  /* Normalise a.  */
+-  while (a_len > 0 && a_ptr[a_len - 1] == 0)
+-    a_len--;
+-
+-  /* Normalise b.  */
+-  for (;;)
+-    {
+-      if (b_len == 0)
+-	/* Division by zero.  */
+-	abort ();
+-      if (b_ptr[b_len - 1] == 0)
+-	b_len--;
+-      else
+-	break;
+-    }
+-
+-  /* Here m = a_len >= 0 and n = b_len > 0.  */
+-
+-  if (a_len < b_len)
+-    {
+-      /* m<n: trivial case.  q=0, r := copy of a.  */
+-      r_ptr = roomptr;
+-      r_len = a_len;
+-      memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
+-      q_ptr = roomptr + a_len;
+-      q_len = 0;
+-    }
+-  else if (b_len == 1)
+-    {
+-      /* n=1: single precision division.
+-	 beta^(m-1) <= a < beta^m  ==>  beta^(m-2) <= a/b < beta^m  */
+-      r_ptr = roomptr;
+-      q_ptr = roomptr + 1;
+-      {
+-	mp_limb_t den = b_ptr[0];
+-	mp_limb_t remainder = 0;
+-	const mp_limb_t *sourceptr = a_ptr + a_len;
+-	mp_limb_t *destptr = q_ptr + a_len;
+-	size_t count;
+-	for (count = a_len; count > 0; count--)
+-	  {
+-	    mp_twolimb_t num =
+-	      ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr;
+-	    *--destptr = num / den;
+-	    remainder = num % den;
+-	  }
+-	/* Normalise and store r.  */
+-	if (remainder > 0)
+-	  {
+-	    r_ptr[0] = remainder;
+-	    r_len = 1;
+-	  }
+-	else
+-	  r_len = 0;
+-	/* Normalise q.  */
+-	q_len = a_len;
+-	if (q_ptr[q_len - 1] == 0)
+-	  q_len--;
+-      }
+-    }
+-  else
+-    {
+-      /* n>1: multiple precision division.
+-	 beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n  ==>
+-	 beta^(m-n-1) <= a/b < beta^(m-n+1).  */
+-      /* Determine s.  */
+-      size_t s;
+-      {
+-	mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
+-	s = 31;
+-	if (msd >= 0x10000)
+-	  {
+-	    msd = msd >> 16;
+-	    s -= 16;
+-	  }
+-	if (msd >= 0x100)
+-	  {
+-	    msd = msd >> 8;
+-	    s -= 8;
+-	  }
+-	if (msd >= 0x10)
+-	  {
+-	    msd = msd >> 4;
+-	    s -= 4;
+-	  }
+-	if (msd >= 0x4)
+-	  {
+-	    msd = msd >> 2;
+-	    s -= 2;
+-	  }
+-	if (msd >= 0x2)
+-	  {
+-	    msd = msd >> 1;
+-	    s -= 1;
+-	  }
+-      }
+-      /* 0 <= s < GMP_LIMB_BITS.
+-	 Copy b, shifting it left by s bits.  */
+-      if (s > 0)
+-	{
+-	  tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t));
+-	  if (tmp_roomptr == NULL)
+-	    {
+-	      free (roomptr);
+-	      return NULL;
+-	    }
+-	  {
+-	    const mp_limb_t *sourceptr = b_ptr;
+-	    mp_limb_t *destptr = tmp_roomptr;
+-	    mp_twolimb_t accu = 0;
+-	    size_t count;
+-	    for (count = b_len; count > 0; count--)
+-	      {
+-		accu += (mp_twolimb_t) *sourceptr++ << s;
+-		*destptr++ = (mp_limb_t) accu;
+-		accu = accu >> GMP_LIMB_BITS;
+-	      }
+-	    /* accu must be zero, since that was how s was determined.  */
+-	    if (accu != 0)
+-	      abort ();
+-	  }
+-	  b_ptr = tmp_roomptr;
+-	}
+-      /* Copy a, shifting it left by s bits, yields r.
+-	 Memory layout:
+-	 At the beginning: r = roomptr[0..a_len],
+-	 at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len]  */
+-      r_ptr = roomptr;
+-      if (s == 0)
+-	{
+-	  memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t));
+-	  r_ptr[a_len] = 0;
+-	}
+-      else
+-	{
+-	  const mp_limb_t *sourceptr = a_ptr;
+-	  mp_limb_t *destptr = r_ptr;
+-	  mp_twolimb_t accu = 0;
+-	  size_t count;
+-	  for (count = a_len; count > 0; count--)
+-	    {
+-	      accu += (mp_twolimb_t) *sourceptr++ << s;
+-	      *destptr++ = (mp_limb_t) accu;
+-	      accu = accu >> GMP_LIMB_BITS;
+-	    }
+-	  *destptr++ = (mp_limb_t) accu;
+-	}
+-      q_ptr = roomptr + b_len;
+-      q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */
+-      {
+-	size_t j = a_len - b_len; /* m-n */
+-	mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */
+-	mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */
+-	mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */
+-	  ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd;
+-	/* Division loop, traversed m-n+1 times.
+-	   j counts down, b is unchanged, beta/2 <= b[n-1] < beta.  */
+-	for (;;)
+-	  {
+-	    mp_limb_t q_star;
+-	    mp_limb_t c1;
+-	    if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */
+-	      {
+-		/* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow.  */
+-		mp_twolimb_t num =
+-		  ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS)
+-		  | r_ptr[j + b_len - 1];
+-		q_star = num / b_msd;
+-		c1 = num % b_msd;
+-	      }
+-	    else
+-	      {
+-		/* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1].  */
+-		q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */
+-		/* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta
+-		   <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta
+-		   <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta)
+-		        {<= beta !}.
+-		   If yes, jump directly to the subtraction loop.
+-		   (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta
+-		    <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */
+-		if (r_ptr[j + b_len] > b_msd
+-		    || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd)
+-		  /* r[j+n] >= b[n-1]+1 or
+-		     r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a
+-		     carry.  */
+-		  goto subtract;
+-	      }
+-	    /* q_star = q*,
+-	       c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, <beta).  */
+-	    {
+-	      mp_twolimb_t c2 = /* c1*beta+r[j+n-2] */
+-		((mp_twolimb_t) c1 << GMP_LIMB_BITS) | r_ptr[j + b_len - 2];
+-	      mp_twolimb_t c3 = /* b[n-2] * q* */
+-		(mp_twolimb_t) b_2msd * (mp_twolimb_t) q_star;
+-	      /* While c2 < c3, increase c2 and decrease c3.
+-		 Consider c3-c2.  While it is > 0, decrease it by
+-		 b[n-1]*beta+b[n-2].  Because of b[n-1]*beta+b[n-2] >= beta^2/2
+-		 this can happen only twice.  */
+-	      if (c3 > c2)
+-		{
+-		  q_star = q_star - 1; /* q* := q* - 1 */
+-		  if (c3 - c2 > b_msdd)
+-		    q_star = q_star - 1; /* q* := q* - 1 */
+-		}
+-	    }
+-	    if (q_star > 0)
+-	      subtract:
+-	      {
+-		/* Subtract r := r - b * q* * beta^j.  */
+-		mp_limb_t cr;
+-		{
+-		  const mp_limb_t *sourceptr = b_ptr;
+-		  mp_limb_t *destptr = r_ptr + j;
+-		  mp_twolimb_t carry = 0;
+-		  size_t count;
+-		  for (count = b_len; count > 0; count--)
+-		    {
+-		      /* Here 0 <= carry <= q*.  */
+-		      carry =
+-			carry
+-			+ (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++
+-			+ (mp_limb_t) ~(*destptr);
+-		      /* Here 0 <= carry <= beta*q* + beta-1.  */
+-		      *destptr++ = ~(mp_limb_t) carry;
+-		      carry = carry >> GMP_LIMB_BITS; /* <= q* */
+-		    }
+-		  cr = (mp_limb_t) carry;
+-		}
+-		/* Subtract cr from r_ptr[j + b_len], then forget about
+-		   r_ptr[j + b_len].  */
+-		if (cr > r_ptr[j + b_len])
+-		  {
+-		    /* Subtraction gave a carry.  */
+-		    q_star = q_star - 1; /* q* := q* - 1 */
+-		    /* Add b back.  */
+-		    {
+-		      const mp_limb_t *sourceptr = b_ptr;
+-		      mp_limb_t *destptr = r_ptr + j;
+-		      mp_limb_t carry = 0;
+-		      size_t count;
+-		      for (count = b_len; count > 0; count--)
+-			{
+-			  mp_limb_t source1 = *sourceptr++;
+-			  mp_limb_t source2 = *destptr;
+-			  *destptr++ = source1 + source2 + carry;
+-			  carry =
+-			    (carry
+-			     ? source1 >= (mp_limb_t) ~source2
+-			     : source1 > (mp_limb_t) ~source2);
+-			}
+-		    }
+-		    /* Forget about the carry and about r[j+n].  */
+-		  }
+-	      }
+-	    /* q* is determined.  Store it as q[j].  */
+-	    q_ptr[j] = q_star;
+-	    if (j == 0)
+-	      break;
+-	    j--;
+-	  }
+-      }
+-      r_len = b_len;
+-      /* Normalise q.  */
+-      if (q_ptr[q_len - 1] == 0)
+-	q_len--;
+-# if 0 /* Not needed here, since we need r only to compare it with b/2, and
+-	  b is shifted left by s bits.  */
+-      /* Shift r right by s bits.  */
+-      if (s > 0)
+-	{
+-	  mp_limb_t ptr = r_ptr + r_len;
+-	  mp_twolimb_t accu = 0;
+-	  size_t count;
+-	  for (count = r_len; count > 0; count--)
+-	    {
+-	      accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS;
+-	      accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s);
+-	      *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS);
+-	    }
+-	}
+-# endif
+-      /* Normalise r.  */
+-      while (r_len > 0 && r_ptr[r_len - 1] == 0)
+-	r_len--;
+-    }
+-  /* Compare r << 1 with b.  */
+-  if (r_len > b_len)
+-    goto increment_q;
+-  {
+-    size_t i;
+-    for (i = b_len;;)
+-      {
+-	mp_limb_t r_i =
+-	  (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0)
+-	  | (i < r_len ? r_ptr[i] << 1 : 0);
+-	mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0);
+-	if (r_i > b_i)
+-	  goto increment_q;
+-	if (r_i < b_i)
+-	  goto keep_q;
+-	if (i == 0)
+-	  break;
+-	i--;
+-      }
+-  }
+-  if (q_len > 0 && ((q_ptr[0] & 1) != 0))
+-    /* q is odd.  */
+-    increment_q:
+-    {
+-      size_t i;
+-      for (i = 0; i < q_len; i++)
+-	if (++(q_ptr[i]) != 0)
+-	  goto keep_q;
+-      q_ptr[q_len++] = 1;
+-    }
+-  keep_q:
+-  if (tmp_roomptr != NULL)
+-    free (tmp_roomptr);
+-  q->limbs = q_ptr;
+-  q->nlimbs = q_len;
+-  return roomptr;
+-}
+-
+-/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal
+-   representation.
+-   Destroys the contents of a.
+-   Return the allocated memory - containing the decimal digits in low-to-high
+-   order, terminated with a NUL character - in case of success, NULL in case
+-   of memory allocation failure.  */
+-static char *
+-convert_to_decimal (mpn_t a, size_t extra_zeroes)
+-{
+-  mp_limb_t *a_ptr = a.limbs;
+-  size_t a_len = a.nlimbs;
+-  /* 0.03345 is slightly larger than log(2)/(9*log(10)).  */
+-  size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
+-  char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes));
+-  if (c_ptr != NULL)
+-    {
+-      char *d_ptr = c_ptr;
+-      for (; extra_zeroes > 0; extra_zeroes--)
+-	*d_ptr++ = '0';
+-      while (a_len > 0)
+-	{
+-	  /* Divide a by 10^9, in-place.  */
+-	  mp_limb_t remainder = 0;
+-	  mp_limb_t *ptr = a_ptr + a_len;
+-	  size_t count;
+-	  for (count = a_len; count > 0; count--)
+-	    {
+-	      mp_twolimb_t num =
+-		((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr;
+-	      *ptr = num / 1000000000;
+-	      remainder = num % 1000000000;
+-	    }
+-	  /* Store the remainder as 9 decimal digits.  */
+-	  for (count = 9; count > 0; count--)
+-	    {
+-	      *d_ptr++ = '0' + (remainder % 10);
+-	      remainder = remainder / 10;
+-	    }
+-	  /* Normalize a.  */
+-	  if (a_ptr[a_len - 1] == 0)
+-	    a_len--;
+-	}
+-      /* Remove leading zeroes.  */
+-      while (d_ptr > c_ptr && d_ptr[-1] == '0')
+-	d_ptr--;
+-      /* But keep at least one zero.  */
+-      if (d_ptr == c_ptr)
+-	*d_ptr++ = '0';
+-      /* Terminate the string.  */
+-      *d_ptr = '\0';
+-    }
+-  return c_ptr;
+-}
+-
+-# if NEED_PRINTF_LONG_DOUBLE
+-
+-/* Assuming x is finite and >= 0:
+-   write x as x = 2^e * m, where m is a bignum.
+-   Return the allocated memory in case of success, NULL in case of memory
+-   allocation failure.  */
+-static void *
+-decode_long_double (long double x, int *ep, mpn_t *mp)
+-{
+-  mpn_t m;
+-  int exp;
+-  long double y;
+-  size_t i;
+-
+-  /* Allocate memory for result.  */
+-  m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+-  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
+-  if (m.limbs == NULL)
+-    return NULL;
+-  /* Split into exponential part and mantissa.  */
+-  y = frexpl (x, &exp);
+-  if (!(y >= 0.0L && y < 1.0L))
+-    abort ();
+-  /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the
+-     latter is an integer.  */
+-  /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs.
+-     I'm not sure whether it's safe to cast a 'long double' value between
+-     2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+-     'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
+-     doesn't matter).  */
+-#  if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0
+-#   if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
+-    {
+-      mp_limb_t hi, lo;
+-      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2));
+-      hi = (int) y;
+-      y -= hi;
+-      if (!(y >= 0.0L && y < 1.0L))
+-	abort ();
+-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+-      lo = (int) y;
+-      y -= lo;
+-      if (!(y >= 0.0L && y < 1.0L))
+-	abort ();
+-      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+-    }
+-#   else
+-    {
+-      mp_limb_t d;
+-      y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS);
+-      d = (int) y;
+-      y -= d;
+-      if (!(y >= 0.0L && y < 1.0L))
+-	abort ();
+-      m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d;
+-    }
+-#   endif
+-#  endif
+-  for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
+-    {
+-      mp_limb_t hi, lo;
+-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+-      hi = (int) y;
+-      y -= hi;
+-      if (!(y >= 0.0L && y < 1.0L))
+-	abort ();
+-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+-      lo = (int) y;
+-      y -= lo;
+-      if (!(y >= 0.0L && y < 1.0L))
+-	abort ();
+-      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+-    }
+-  if (!(y == 0.0L))
+-    abort ();
+-  /* Normalise.  */
+-  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
+-    m.nlimbs--;
+-  *mp = m;
+-  *ep = exp - LDBL_MANT_BIT;
+-  return m.limbs;
+-}
+-
+-# endif
+-
+-# if NEED_PRINTF_DOUBLE
+-
+-/* Assuming x is finite and >= 0:
+-   write x as x = 2^e * m, where m is a bignum.
+-   Return the allocated memory in case of success, NULL in case of memory
+-   allocation failure.  */
+-static void *
+-decode_double (double x, int *ep, mpn_t *mp)
+-{
+-  mpn_t m;
+-  int exp;
+-  double y;
+-  size_t i;
+-
+-  /* Allocate memory for result.  */
+-  m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS;
+-  m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t));
+-  if (m.limbs == NULL)
+-    return NULL;
+-  /* Split into exponential part and mantissa.  */
+-  y = frexp (x, &exp);
+-  if (!(y >= 0.0 && y < 1.0))
+-    abort ();
+-  /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the
+-     latter is an integer.  */
+-  /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs.
+-     I'm not sure whether it's safe to cast a 'double' value between
+-     2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
+-     'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
+-     doesn't matter).  */
+-#  if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0
+-#   if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2
+-    {
+-      mp_limb_t hi, lo;
+-      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2));
+-      hi = (int) y;
+-      y -= hi;
+-      if (!(y >= 0.0 && y < 1.0))
+-	abort ();
+-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+-      lo = (int) y;
+-      y -= lo;
+-      if (!(y >= 0.0 && y < 1.0))
+-	abort ();
+-      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+-    }
+-#   else
+-    {
+-      mp_limb_t d;
+-      y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS);
+-      d = (int) y;
+-      y -= d;
+-      if (!(y >= 0.0 && y < 1.0))
+-	abort ();
+-      m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d;
+-    }
+-#   endif
+-#  endif
+-  for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; )
+-    {
+-      mp_limb_t hi, lo;
+-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+-      hi = (int) y;
+-      y -= hi;
+-      if (!(y >= 0.0 && y < 1.0))
+-	abort ();
+-      y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2);
+-      lo = (int) y;
+-      y -= lo;
+-      if (!(y >= 0.0 && y < 1.0))
+-	abort ();
+-      m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
+-    }
+-  if (!(y == 0.0))
+-    abort ();
+-  /* Normalise.  */
+-  while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
+-    m.nlimbs--;
+-  *mp = m;
+-  *ep = exp - DBL_MANT_BIT;
+-  return m.limbs;
+-}
+-
+-# endif
+-
+-/* Assuming x = 2^e * m is finite and >= 0, and n is an integer:
+-   Returns the decimal representation of round (x * 10^n).
+-   Return the allocated memory - containing the decimal digits in low-to-high
+-   order, terminated with a NUL character - in case of success, NULL in case
+-   of memory allocation failure.  */
+-static char *
+-scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n)
+-{
+-  int s;
+-  size_t extra_zeroes;
+-  unsigned int abs_n;
+-  unsigned int abs_s;
+-  mp_limb_t *pow5_ptr;
+-  size_t pow5_len;
+-  unsigned int s_limbs;
+-  unsigned int s_bits;
+-  mpn_t pow5;
+-  mpn_t z;
+-  void *z_memory;
+-  char *digits;
+-
+-  if (memory == NULL)
+-    return NULL;
+-  /* x = 2^e * m, hence
+-     y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m)
+-       = round (2^s * 5^n * m).  */
+-  s = e + n;
+-  extra_zeroes = 0;
+-  /* Factor out a common power of 10 if possible.  */
+-  if (s > 0 && n > 0)
+-    {
+-      extra_zeroes = (s < n ? s : n);
+-      s -= extra_zeroes;
+-      n -= extra_zeroes;
+-    }
+-  /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes.
+-     Before converting to decimal, we need to compute
+-     z = round (2^s * 5^n * m).  */
+-  /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same
+-     sign.  2.322 is slightly larger than log(5)/log(2).  */
+-  abs_n = (n >= 0 ? n : -n);
+-  abs_s = (s >= 0 ? s : -s);
+-  pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1
+-				    + abs_s / GMP_LIMB_BITS + 1)
+-				   * sizeof (mp_limb_t));
+-  if (pow5_ptr == NULL)
+-    {
+-      free (memory);
+-      return NULL;
+-    }
+-  /* Initialize with 1.  */
+-  pow5_ptr[0] = 1;
+-  pow5_len = 1;
+-  /* Multiply with 5^|n|.  */
+-  if (abs_n > 0)
+-    {
+-      static mp_limb_t const small_pow5[13 + 1] =
+-	{
+-	  1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625,
+-	  48828125, 244140625, 1220703125
+-	};
+-      unsigned int n13;
+-      for (n13 = 0; n13 <= abs_n; n13 += 13)
+-	{
+-	  mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13];
+-	  size_t j;
+-	  mp_twolimb_t carry = 0;
+-	  for (j = 0; j < pow5_len; j++)
+-	    {
+-	      mp_limb_t digit2 = pow5_ptr[j];
+-	      carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2;
+-	      pow5_ptr[j] = (mp_limb_t) carry;
+-	      carry = carry >> GMP_LIMB_BITS;
+-	    }
+-	  if (carry > 0)
+-	    pow5_ptr[pow5_len++] = (mp_limb_t) carry;
+-	}
+-    }
+-  s_limbs = abs_s / GMP_LIMB_BITS;
+-  s_bits = abs_s % GMP_LIMB_BITS;
+-  if (n >= 0 ? s >= 0 : s <= 0)
+-    {
+-      /* Multiply with 2^|s|.  */
+-      if (s_bits > 0)
+-	{
+-	  mp_limb_t *ptr = pow5_ptr;
+-	  mp_twolimb_t accu = 0;
+-	  size_t count;
+-	  for (count = pow5_len; count > 0; count--)
+-	    {
+-	      accu += (mp_twolimb_t) *ptr << s_bits;
+-	      *ptr++ = (mp_limb_t) accu;
+-	      accu = accu >> GMP_LIMB_BITS;
+-	    }
+-	  if (accu > 0)
+-	    {
+-	      *ptr = (mp_limb_t) accu;
+-	      pow5_len++;
+-	    }
+-	}
+-      if (s_limbs > 0)
+-	{
+-	  size_t count;
+-	  for (count = pow5_len; count > 0;)
+-	    {
+-	      count--;
+-	      pow5_ptr[s_limbs + count] = pow5_ptr[count];
+-	    }
+-	  for (count = s_limbs; count > 0;)
+-	    {
+-	      count--;
+-	      pow5_ptr[count] = 0;
+-	    }
+-	  pow5_len += s_limbs;
+-	}
+-      pow5.limbs = pow5_ptr;
+-      pow5.nlimbs = pow5_len;
+-      if (n >= 0)
+-	{
+-	  /* Multiply m with pow5.  No division needed.  */
+-	  z_memory = multiply (m, pow5, &z);
+-	}
+-      else
+-	{
+-	  /* Divide m by pow5 and round.  */
+-	  z_memory = divide (m, pow5, &z);
+-	}
+-    }
+-  else
+-    {
+-      pow5.limbs = pow5_ptr;
+-      pow5.nlimbs = pow5_len;
+-      if (n >= 0)
+-	{
+-	  /* n >= 0, s < 0.
+-	     Multiply m with pow5, then divide by 2^|s|.  */
+-	  mpn_t numerator;
+-	  mpn_t denominator;
+-	  void *tmp_memory;
+-	  tmp_memory = multiply (m, pow5, &numerator);
+-	  if (tmp_memory == NULL)
+-	    {
+-	      free (pow5_ptr);
+-	      free (memory);
+-	      return NULL;
+-	    }
+-	  /* Construct 2^|s|.  */
+-	  {
+-	    mp_limb_t *ptr = pow5_ptr + pow5_len;
+-	    size_t i;
+-	    for (i = 0; i < s_limbs; i++)
+-	      ptr[i] = 0;
+-	    ptr[s_limbs] = (mp_limb_t) 1 << s_bits;
+-	    denominator.limbs = ptr;
+-	    denominator.nlimbs = s_limbs + 1;
+-	  }
+-	  z_memory = divide (numerator, denominator, &z);
+-	  free (tmp_memory);
+-	}
+-      else
+-	{
+-	  /* n < 0, s > 0.
+-	     Multiply m with 2^s, then divide by pow5.  */
+-	  mpn_t numerator;
+-	  mp_limb_t *num_ptr;
+-	  num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1)
+-					  * sizeof (mp_limb_t));
+-	  if (num_ptr == NULL)
+-	    {
+-	      free (pow5_ptr);
+-	      free (memory);
+-	      return NULL;
+-	    }
+-	  {
+-	    mp_limb_t *destptr = num_ptr;
+-	    {
+-	      size_t i;
+-	      for (i = 0; i < s_limbs; i++)
+-		*destptr++ = 0;
+-	    }
+-	    if (s_bits > 0)
+-	      {
+-		const mp_limb_t *sourceptr = m.limbs;
+-		mp_twolimb_t accu = 0;
+-		size_t count;
+-		for (count = m.nlimbs; count > 0; count--)
+-		  {
+-		    accu += (mp_twolimb_t) *sourceptr++ << s_bits;
+-		    *destptr++ = (mp_limb_t) accu;
+-		    accu = accu >> GMP_LIMB_BITS;
+-		  }
+-		if (accu > 0)
+-		  *destptr++ = (mp_limb_t) accu;
+-	      }
+-	    else
+-	      {
+-		const mp_limb_t *sourceptr = m.limbs;
+-		size_t count;
+-		for (count = m.nlimbs; count > 0; count--)
+-		  *destptr++ = *sourceptr++;
+-	      }
+-	    numerator.limbs = num_ptr;
+-	    numerator.nlimbs = destptr - num_ptr;
+-	  }
+-	  z_memory = divide (numerator, pow5, &z);
+-	  free (num_ptr);
+-	}
+-    }
+-  free (pow5_ptr);
+-  free (memory);
+-
+-  /* Here y = round (x * 10^n) = z * 10^extra_zeroes.  */
+-
+-  if (z_memory == NULL)
+-    return NULL;
+-  digits = convert_to_decimal (z, extra_zeroes);
+-  free (z_memory);
+-  return digits;
+-}
+-
+-# if NEED_PRINTF_LONG_DOUBLE
+-
+-/* Assuming x is finite and >= 0, and n is an integer:
+-   Returns the decimal representation of round (x * 10^n).
+-   Return the allocated memory - containing the decimal digits in low-to-high
+-   order, terminated with a NUL character - in case of success, NULL in case
+-   of memory allocation failure.  */
+-static char *
+-scale10_round_decimal_long_double (long double x, int n)
+-{
+-  int e;
+-  mpn_t m;
+-  void *memory = decode_long_double (x, &e, &m);
+-  return scale10_round_decimal_decoded (e, m, memory, n);
+-}
+-
+-# endif
+-
+-# if NEED_PRINTF_DOUBLE
+-
+-/* Assuming x is finite and >= 0, and n is an integer:
+-   Returns the decimal representation of round (x * 10^n).
+-   Return the allocated memory - containing the decimal digits in low-to-high
+-   order, terminated with a NUL character - in case of success, NULL in case
+-   of memory allocation failure.  */
+-static char *
+-scale10_round_decimal_double (double x, int n)
+-{
+-  int e;
+-  mpn_t m;
+-  void *memory = decode_double (x, &e, &m);
+-  return scale10_round_decimal_decoded (e, m, memory, n);
+-}
+-
+-# endif
+-
+-# if NEED_PRINTF_LONG_DOUBLE
+-
+-/* Assuming x is finite and > 0:
+-   Return an approximation for n with 10^n <= x < 10^(n+1).
+-   The approximation is usually the right n, but may be off by 1 sometimes.  */
+-static int
+-floorlog10l (long double x)
+-{
+-  int exp;
+-  long double y;
+-  double z;
+-  double l;
+-
+-  /* Split into exponential part and mantissa.  */
+-  y = frexpl (x, &exp);
+-  if (!(y >= 0.0L && y < 1.0L))
+-    abort ();
+-  if (y == 0.0L)
+-    return INT_MIN;
+-  if (y < 0.5L)
+-    {
+-      while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2))))
+-	{
+-	  y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
+-	  exp -= GMP_LIMB_BITS;
+-	}
+-      if (y < (1.0L / (1 << 16)))
+-	{
+-	  y *= 1.0L * (1 << 16);
+-	  exp -= 16;
+-	}
+-      if (y < (1.0L / (1 << 8)))
+-	{
+-	  y *= 1.0L * (1 << 8);
+-	  exp -= 8;
+-	}
+-      if (y < (1.0L / (1 << 4)))
+-	{
+-	  y *= 1.0L * (1 << 4);
+-	  exp -= 4;
+-	}
+-      if (y < (1.0L / (1 << 2)))
+-	{
+-	  y *= 1.0L * (1 << 2);
+-	  exp -= 2;
+-	}
+-      if (y < (1.0L / (1 << 1)))
+-	{
+-	  y *= 1.0L * (1 << 1);
+-	  exp -= 1;
+-	}
+-    }
+-  if (!(y >= 0.5L && y < 1.0L))
+-    abort ();
+-  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
+-  l = exp;
+-  z = y;
+-  if (z < 0.70710678118654752444)
+-    {
+-      z *= 1.4142135623730950488;
+-      l -= 0.5;
+-    }
+-  if (z < 0.8408964152537145431)
+-    {
+-      z *= 1.1892071150027210667;
+-      l -= 0.25;
+-    }
+-  if (z < 0.91700404320467123175)
+-    {
+-      z *= 1.0905077326652576592;
+-      l -= 0.125;
+-    }
+-  if (z < 0.9576032806985736469)
+-    {
+-      z *= 1.0442737824274138403;
+-      l -= 0.0625;
+-    }
+-  /* Now 0.95 <= z <= 1.01.  */
+-  z = 1 - z;
+-  /* log(1-z) = - z - z^2/2 - z^3/3 - z^4/4 - ...
+-     Four terms are enough to get an approximation with error < 10^-7.  */
+-  l -= z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25)));
+-  /* Finally multiply with log(2)/log(10), yields an approximation for
+-     log10(x).  */
+-  l *= 0.30102999566398119523;
+-  /* Round down to the next integer.  */
+-  return (int) l + (l < 0 ? -1 : 0);
+-}
+-
+-# endif
+-
+-# if NEED_PRINTF_DOUBLE
+-
+-/* Assuming x is finite and > 0:
+-   Return an approximation for n with 10^n <= x < 10^(n+1).
+-   The approximation is usually the right n, but may be off by 1 sometimes.  */
+-static int
+-floorlog10 (double x)
+-{
+-  int exp;
+-  double y;
+-  double z;
+-  double l;
+-
+-  /* Split into exponential part and mantissa.  */
+-  y = frexp (x, &exp);
+-  if (!(y >= 0.0 && y < 1.0))
+-    abort ();
+-  if (y == 0.0)
+-    return INT_MIN;
+-  if (y < 0.5)
+-    {
+-      while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2))))
+-	{
+-	  y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2));
+-	  exp -= GMP_LIMB_BITS;
+-	}
+-      if (y < (1.0 / (1 << 16)))
+-	{
+-	  y *= 1.0 * (1 << 16);
+-	  exp -= 16;
+-	}
+-      if (y < (1.0 / (1 << 8)))
+-	{
+-	  y *= 1.0 * (1 << 8);
+-	  exp -= 8;
+-	}
+-      if (y < (1.0 / (1 << 4)))
+-	{
+-	  y *= 1.0 * (1 << 4);
+-	  exp -= 4;
+-	}
+-      if (y < (1.0 / (1 << 2)))
+-	{
+-	  y *= 1.0 * (1 << 2);
+-	  exp -= 2;
+-	}
+-      if (y < (1.0 / (1 << 1)))
+-	{
+-	  y *= 1.0 * (1 << 1);
+-	  exp -= 1;
+-	}
+-    }
+-  if (!(y >= 0.5 && y < 1.0))
+-    abort ();
+-  /* Compute an approximation for l = log2(x) = exp + log2(y).  */
+-  l = exp;
+-  z = y;
+-  if (z < 0.70710678118654752444)
+-    {
+-      z *= 1.4142135623730950488;
+-      l -= 0.5;
+-    }
+-  if (z < 0.8408964152537145431)
+-    {
+-      z *= 1.1892071150027210667;
+-      l -= 0.25;
+-    }
+-  if (z < 0.91700404320467123175)
+-    {
+-      z *= 1.0905077326652576592;
+-      l -= 0.125;
+-    }
+-  if (z < 0.9576032806985736469)
+-    {
+-      z *= 1.0442737824274138403;
+-      l -= 0.0625;
+-    }
+-  /* Now 0.95 <= z <= 1.01.  */
+-  z = 1 - z;
+-  /* log(1-z) = - z - z^2/2 - z^3/3 - z^4/4 - ...
+-     Four terms are enough to get an approximation with error < 10^-7.  */
+-  l -= z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25)));
+-  /* Finally multiply with log(2)/log(10), yields an approximation for
+-     log10(x).  */
+-  l *= 0.30102999566398119523;
+-  /* Round down to the next integer.  */
+-  return (int) l + (l < 0 ? -1 : 0);
+-}
+-
+-# endif
+-
+-#endif
+-
+-DCHAR_T *
+-VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
+-	    const FCHAR_T *format, va_list args)
+-{
+-  DIRECTIVES d;
+-  arguments a;
+-
+-  if (PRINTF_PARSE (format, &d, &a) < 0)
+-    /* errno is already set.  */
+-    return NULL;
+-
+-#define CLEANUP() \
+-  free (d.dir);								\
+-  if (a.arg)								\
+-    free (a.arg);
+-
+-  if (PRINTF_FETCHARGS (args, &a) < 0)
+-    {
+-      CLEANUP ();
+-      errno = EINVAL;
+-      return NULL;
+-    }
+-
+-  {
+-    size_t buf_neededlength;
+-    TCHAR_T *buf;
+-    TCHAR_T *buf_malloced;
+-    const FCHAR_T *cp;
+-    size_t i;
+-    DIRECTIVE *dp;
+-    /* Output string accumulator.  */
+-    DCHAR_T *result;
+-    size_t allocated;
+-    size_t length;
+-
+-    /* Allocate a small buffer that will hold a directive passed to
+-       sprintf or snprintf.  */
+-    buf_neededlength =
+-      xsum4 (7, d.max_width_length, d.max_precision_length, 6);
+-#if HAVE_ALLOCA
+-    if (buf_neededlength < 4000 / sizeof (TCHAR_T))
+-      {
+-	buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T));
+-	buf_malloced = NULL;
+-      }
+-    else
+-#endif
+-      {
+-	size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T));
+-	if (size_overflow_p (buf_memsize))
+-	  goto out_of_memory_1;
+-	buf = (TCHAR_T *) malloc (buf_memsize);
+-	if (buf == NULL)
+-	  goto out_of_memory_1;
+-	buf_malloced = buf;
+-      }
+-
+-    if (resultbuf != NULL)
+-      {
+-	result = resultbuf;
+-	allocated = *lengthp;
+-      }
+-    else
+-      {
+-	result = NULL;
+-	allocated = 0;
+-      }
+-    length = 0;
+-    /* Invariants:
+-       result is either == resultbuf or == NULL or malloc-allocated.
+-       If length > 0, then result != NULL.  */
+-
+-    /* Ensures that allocated >= needed.  Aborts through a jump to
+-       out_of_memory if needed is SIZE_MAX or otherwise too big.  */
+-#define ENSURE_ALLOCATION(needed) \
+-    if ((needed) > allocated)						     \
+-      {									     \
+-	size_t memory_size;						     \
+-	DCHAR_T *memory;						     \
+-									     \
+-	allocated = (allocated > 0 ? xtimes (allocated, 2) : 12);	     \
+-	if ((needed) > allocated)					     \
+-	  allocated = (needed);						     \
+-	memory_size = xtimes (allocated, sizeof (DCHAR_T));		     \
+-	if (size_overflow_p (memory_size))				     \
+-	  goto out_of_memory;						     \
+-	if (result == resultbuf || result == NULL)			     \
+-	  memory = (DCHAR_T *) malloc (memory_size);			     \
+-	else								     \
+-	  memory = (DCHAR_T *) realloc (result, memory_size);		     \
+-	if (memory == NULL)						     \
+-	  goto out_of_memory;						     \
+-	if (result == resultbuf && length > 0)				     \
+-	  DCHAR_CPY (memory, result, length);				     \
+-	result = memory;						     \
+-      }
+-
+-    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
+-      {
+-	if (cp != dp->dir_start)
+-	  {
+-	    size_t n = dp->dir_start - cp;
+-	    size_t augmented_length = xsum (length, n);
+-
+-	    ENSURE_ALLOCATION (augmented_length);
+-	    /* This copies a piece of FCHAR_T[] into a DCHAR_T[].  Here we
+-	       need that the format string contains only ASCII characters
+-	       if FCHAR_T and DCHAR_T are not the same type.  */
+-	    if (sizeof (FCHAR_T) == sizeof (DCHAR_T))
+-	      {
+-		DCHAR_CPY (result + length, (const DCHAR_T *) cp, n);
+-		length = augmented_length;
+-	      }
+-	    else
+-	      {
+-		do
+-		  result[length++] = (unsigned char) *cp++;
+-		while (--n > 0);
+-	      }
+-	  }
+-	if (i == d.count)
+-	  break;
+-
+-	/* Execute a single directive.  */
+-	if (dp->conversion == '%')
+-	  {
+-	    size_t augmented_length;
+-
+-	    if (!(dp->arg_index == ARG_NONE))
+-	      abort ();
+-	    augmented_length = xsum (length, 1);
+-	    ENSURE_ALLOCATION (augmented_length);
+-	    result[length] = '%';
+-	    length = augmented_length;
+-	  }
+-	else
+-	  {
+-	    if (!(dp->arg_index != ARG_NONE))
+-	      abort ();
+-
+-	    if (dp->conversion == 'n')
+-	      {
+-		switch (a.arg[dp->arg_index].type)
+-		  {
+-		  case TYPE_COUNT_SCHAR_POINTER:
+-		    *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
+-		    break;
+-		  case TYPE_COUNT_SHORT_POINTER:
+-		    *a.arg[dp->arg_index].a.a_count_short_pointer = length;
+-		    break;
+-		  case TYPE_COUNT_INT_POINTER:
+-		    *a.arg[dp->arg_index].a.a_count_int_pointer = length;
+-		    break;
+-		  case TYPE_COUNT_LONGINT_POINTER:
+-		    *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
+-		    break;
+-#if HAVE_LONG_LONG_INT
+-		  case TYPE_COUNT_LONGLONGINT_POINTER:
+-		    *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
+-		    break;
+-#endif
+-		  default:
+-		    abort ();
+-		  }
+-	      }
+-#if ENABLE_UNISTDIO
+-	    /* The unistdio extensions.  */
+-	    else if (dp->conversion == 'U')
+-	      {
+-		arg_type type = a.arg[dp->arg_index].type;
+-		int flags = dp->flags;
+-		int has_width;
+-		size_t width;
+-		int has_precision;
+-		size_t precision;
+-
+-		has_width = 0;
+-		width = 0;
+-		if (dp->width_start != dp->width_end)
+-		  {
+-		    if (dp->width_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->width_arg_index].a.a_int;
+-			if (arg < 0)
+-			  {
+-			    /* "A negative field width is taken as a '-' flag
+-			        followed by a positive field width."  */
+-			    flags |= FLAG_LEFT;
+-			    width = (unsigned int) (-arg);
+-			  }
+-			else
+-			  width = arg;
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->width_start;
+-
+-			do
+-			  width = xsum (xtimes (width, 10), *digitp++ - '0');
+-			while (digitp != dp->width_end);
+-		      }
+-		    has_width = 1;
+-		  }
+-
+-		has_precision = 0;
+-		precision = 0;
+-		if (dp->precision_start != dp->precision_end)
+-		  {
+-		    if (dp->precision_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->precision_arg_index].a.a_int;
+-			/* "A negative precision is taken as if the precision
+-			    were omitted."  */
+-			if (arg >= 0)
+-			  {
+-			    precision = arg;
+-			    has_precision = 1;
+-			  }
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->precision_start + 1;
+-
+-			precision = 0;
+-			while (digitp != dp->precision_end)
+-			  precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+-			has_precision = 1;
+-		      }
+-		  }
+-
+-		switch (type)
+-		  {
+-		  case TYPE_U8_STRING:
+-		    {
+-		      const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string;
+-		      const uint8_t *arg_end;
+-		      size_t characters;
+-
+-		      if (has_precision)
+-			{
+-			  /* Use only PRECISION characters, from the left.  */
+-			  arg_end = arg;
+-			  characters = 0;
+-			  for (; precision > 0; precision--)
+-			    {
+-			      int count = u8_strmblen (arg_end);
+-			      if (count == 0)
+-				break;
+-			      if (count < 0)
+-				{
+-				  if (!(result == resultbuf || result == NULL))
+-				    free (result);
+-				  if (buf_malloced != NULL)
+-				    free (buf_malloced);
+-				  CLEANUP ();
+-				  errno = EILSEQ;
+-				  return NULL;
+-				}
+-			      arg_end += count;
+-			      characters++;
+-			    }
+-			}
+-		      else if (has_width)
+-			{
+-			  /* Use the entire string, and count the number of
+-			     characters.  */
+-			  arg_end = arg;
+-			  characters = 0;
+-			  for (;;)
+-			    {
+-			      int count = u8_strmblen (arg_end);
+-			      if (count == 0)
+-				break;
+-			      if (count < 0)
+-				{
+-				  if (!(result == resultbuf || result == NULL))
+-				    free (result);
+-				  if (buf_malloced != NULL)
+-				    free (buf_malloced);
+-				  CLEANUP ();
+-				  errno = EILSEQ;
+-				  return NULL;
+-				}
+-			      arg_end += count;
+-			      characters++;
+-			    }
+-			}
+-		      else
+-			{
+-			  /* Use the entire string.  */
+-			  arg_end = arg + u8_strlen (arg);
+-			  /* The number of characters doesn't matter.  */
+-			  characters = 0;
+-			}
+-
+-		      if (has_width && width > characters
+-			  && !(dp->flags & FLAG_LEFT))
+-			{
+-			  size_t n = width - characters;
+-			  ENSURE_ALLOCATION (xsum (length, n));
+-			  DCHAR_SET (result + length, ' ', n);
+-			  length += n;
+-			}
+-
+-# if DCHAR_IS_UINT8_T
+-		      {
+-			size_t n = arg_end - arg;
+-			ENSURE_ALLOCATION (xsum (length, n));
+-			DCHAR_CPY (result + length, arg, n);
+-			length += n;
+-		      }
+-# else
+-		      { /* Convert.  */
+-			DCHAR_T *converted = result + length;
+-			size_t converted_len = allocated - length;
+-#  if DCHAR_IS_TCHAR
+-			/* Convert from UTF-8 to locale encoding.  */
+-			if (u8_conv_to_encoding (locale_charset (),
+-						 iconveh_question_mark,
+-						 arg, arg_end - arg, NULL,
+-						 &converted, &converted_len)
+-			    < 0)
+-#  else
+-			/* Convert from UTF-8 to UTF-16/UTF-32.  */
+-			converted =
+-			  U8_TO_DCHAR (arg, arg_end - arg,
+-				       converted, &converted_len);
+-			if (converted == NULL)
+-#  endif
+-			  {
+-			    int saved_errno = errno;
+-			    if (!(result == resultbuf || result == NULL))
+-			      free (result);
+-			    if (buf_malloced != NULL)
+-			      free (buf_malloced);
+-			    CLEANUP ();
+-			    errno = saved_errno;
+-			    return NULL;
+-			  }
+-			if (converted != result + length)
+-			  {
+-			    ENSURE_ALLOCATION (xsum (length, converted_len));
+-			    DCHAR_CPY (result + length, converted, converted_len);
+-			    free (converted);
+-			  }
+-			length += converted_len;
+-		      }
+-# endif
+-
+-		      if (has_width && width > characters
+-			  && (dp->flags & FLAG_LEFT))
+-			{
+-			  size_t n = width - characters;
+-			  ENSURE_ALLOCATION (xsum (length, n));
+-			  DCHAR_SET (result + length, ' ', n);
+-			  length += n;
+-			}
+-		    }
+-		    break;
+-
+-		  case TYPE_U16_STRING:
+-		    {
+-		      const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string;
+-		      const uint16_t *arg_end;
+-		      size_t characters;
+-
+-		      if (has_precision)
+-			{
+-			  /* Use only PRECISION characters, from the left.  */
+-			  arg_end = arg;
+-			  characters = 0;
+-			  for (; precision > 0; precision--)
+-			    {
+-			      int count = u16_strmblen (arg_end);
+-			      if (count == 0)
+-				break;
+-			      if (count < 0)
+-				{
+-				  if (!(result == resultbuf || result == NULL))
+-				    free (result);
+-				  if (buf_malloced != NULL)
+-				    free (buf_malloced);
+-				  CLEANUP ();
+-				  errno = EILSEQ;
+-				  return NULL;
+-				}
+-			      arg_end += count;
+-			      characters++;
+-			    }
+-			}
+-		      else if (has_width)
+-			{
+-			  /* Use the entire string, and count the number of
+-			     characters.  */
+-			  arg_end = arg;
+-			  characters = 0;
+-			  for (;;)
+-			    {
+-			      int count = u16_strmblen (arg_end);
+-			      if (count == 0)
+-				break;
+-			      if (count < 0)
+-				{
+-				  if (!(result == resultbuf || result == NULL))
+-				    free (result);
+-				  if (buf_malloced != NULL)
+-				    free (buf_malloced);
+-				  CLEANUP ();
+-				  errno = EILSEQ;
+-				  return NULL;
+-				}
+-			      arg_end += count;
+-			      characters++;
+-			    }
+-			}
+-		      else
+-			{
+-			  /* Use the entire string.  */
+-			  arg_end = arg + u16_strlen (arg);
+-			  /* The number of characters doesn't matter.  */
+-			  characters = 0;
+-			}
+-
+-		      if (has_width && width > characters
+-			  && !(dp->flags & FLAG_LEFT))
+-			{
+-			  size_t n = width - characters;
+-			  ENSURE_ALLOCATION (xsum (length, n));
+-			  DCHAR_SET (result + length, ' ', n);
+-			  length += n;
+-			}
+-
+-# if DCHAR_IS_UINT16_T
+-		      {
+-			size_t n = arg_end - arg;
+-			ENSURE_ALLOCATION (xsum (length, n));
+-			DCHAR_CPY (result + length, arg, n);
+-			length += n;
+-		      }
+-# else
+-		      { /* Convert.  */
+-			DCHAR_T *converted = result + length;
+-			size_t converted_len = allocated - length;
+-#  if DCHAR_IS_TCHAR
+-			/* Convert from UTF-16 to locale encoding.  */
+-			if (u16_conv_to_encoding (locale_charset (),
+-						  iconveh_question_mark,
+-						  arg, arg_end - arg, NULL,
+-						  &converted, &converted_len)
+-			    < 0)
+-#  else
+-			/* Convert from UTF-16 to UTF-8/UTF-32.  */
+-			converted =
+-			  U16_TO_DCHAR (arg, arg_end - arg,
+-					converted, &converted_len);
+-			if (converted == NULL)
+-#  endif
+-			  {
+-			    int saved_errno = errno;
+-			    if (!(result == resultbuf || result == NULL))
+-			      free (result);
+-			    if (buf_malloced != NULL)
+-			      free (buf_malloced);
+-			    CLEANUP ();
+-			    errno = saved_errno;
+-			    return NULL;
+-			  }
+-			if (converted != result + length)
+-			  {
+-			    ENSURE_ALLOCATION (xsum (length, converted_len));
+-			    DCHAR_CPY (result + length, converted, converted_len);
+-			    free (converted);
+-			  }
+-			length += converted_len;
+-		      }
+-# endif
+-
+-		      if (has_width && width > characters
+-			  && (dp->flags & FLAG_LEFT))
+-			{
+-			  size_t n = width - characters;
+-			  ENSURE_ALLOCATION (xsum (length, n));
+-			  DCHAR_SET (result + length, ' ', n);
+-			  length += n;
+-			}
+-		    }
+-		    break;
+-
+-		  case TYPE_U32_STRING:
+-		    {
+-		      const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string;
+-		      const uint32_t *arg_end;
+-		      size_t characters;
+-
+-		      if (has_precision)
+-			{
+-			  /* Use only PRECISION characters, from the left.  */
+-			  arg_end = arg;
+-			  characters = 0;
+-			  for (; precision > 0; precision--)
+-			    {
+-			      int count = u32_strmblen (arg_end);
+-			      if (count == 0)
+-				break;
+-			      if (count < 0)
+-				{
+-				  if (!(result == resultbuf || result == NULL))
+-				    free (result);
+-				  if (buf_malloced != NULL)
+-				    free (buf_malloced);
+-				  CLEANUP ();
+-				  errno = EILSEQ;
+-				  return NULL;
+-				}
+-			      arg_end += count;
+-			      characters++;
+-			    }
+-			}
+-		      else if (has_width)
+-			{
+-			  /* Use the entire string, and count the number of
+-			     characters.  */
+-			  arg_end = arg;
+-			  characters = 0;
+-			  for (;;)
+-			    {
+-			      int count = u32_strmblen (arg_end);
+-			      if (count == 0)
+-				break;
+-			      if (count < 0)
+-				{
+-				  if (!(result == resultbuf || result == NULL))
+-				    free (result);
+-				  if (buf_malloced != NULL)
+-				    free (buf_malloced);
+-				  CLEANUP ();
+-				  errno = EILSEQ;
+-				  return NULL;
+-				}
+-			      arg_end += count;
+-			      characters++;
+-			    }
+-			}
+-		      else
+-			{
+-			  /* Use the entire string.  */
+-			  arg_end = arg + u32_strlen (arg);
+-			  /* The number of characters doesn't matter.  */
+-			  characters = 0;
+-			}
+-
+-		      if (has_width && width > characters
+-			  && !(dp->flags & FLAG_LEFT))
+-			{
+-			  size_t n = width - characters;
+-			  ENSURE_ALLOCATION (xsum (length, n));
+-			  DCHAR_SET (result + length, ' ', n);
+-			  length += n;
+-			}
+-
+-# if DCHAR_IS_UINT32_T
+-		      {
+-			size_t n = arg_end - arg;
+-			ENSURE_ALLOCATION (xsum (length, n));
+-			DCHAR_CPY (result + length, arg, n);
+-			length += n;
+-		      }
+-# else
+-		      { /* Convert.  */
+-			DCHAR_T *converted = result + length;
+-			size_t converted_len = allocated - length;
+-#  if DCHAR_IS_TCHAR
+-			/* Convert from UTF-32 to locale encoding.  */
+-			if (u32_conv_to_encoding (locale_charset (),
+-						  iconveh_question_mark,
+-						  arg, arg_end - arg, NULL,
+-						  &converted, &converted_len)
+-			    < 0)
+-#  else
+-			/* Convert from UTF-32 to UTF-8/UTF-16.  */
+-			converted =
+-			  U32_TO_DCHAR (arg, arg_end - arg,
+-					converted, &converted_len);
+-			if (converted == NULL)
+-#  endif
+-			  {
+-			    int saved_errno = errno;
+-			    if (!(result == resultbuf || result == NULL))
+-			      free (result);
+-			    if (buf_malloced != NULL)
+-			      free (buf_malloced);
+-			    CLEANUP ();
+-			    errno = saved_errno;
+-			    return NULL;
+-			  }
+-			if (converted != result + length)
+-			  {
+-			    ENSURE_ALLOCATION (xsum (length, converted_len));
+-			    DCHAR_CPY (result + length, converted, converted_len);
+-			    free (converted);
+-			  }
+-			length += converted_len;
+-		      }
+-# endif
+-
+-		      if (has_width && width > characters
+-			  && (dp->flags & FLAG_LEFT))
+-			{
+-			  size_t n = width - characters;
+-			  ENSURE_ALLOCATION (xsum (length, n));
+-			  DCHAR_SET (result + length, ' ', n);
+-			  length += n;
+-			}
+-		    }
+-		    break;
+-
+-		  default:
+-		    abort ();
+-		  }
+-	      }
+-#endif
+-#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
+-	    else if ((dp->conversion == 'a' || dp->conversion == 'A')
+-# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE))
+-		     && (0
+-#  if NEED_PRINTF_DOUBLE
+-			 || a.arg[dp->arg_index].type == TYPE_DOUBLE
+-#  endif
+-#  if NEED_PRINTF_LONG_DOUBLE
+-			 || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+-#  endif
+-			)
+-# endif
+-		    )
+-	      {
+-		arg_type type = a.arg[dp->arg_index].type;
+-		int flags = dp->flags;
+-		int has_width;
+-		size_t width;
+-		int has_precision;
+-		size_t precision;
+-		size_t tmp_length;
+-		DCHAR_T tmpbuf[700];
+-		DCHAR_T *tmp;
+-		DCHAR_T *pad_ptr;
+-		DCHAR_T *p;
+-
+-		has_width = 0;
+-		width = 0;
+-		if (dp->width_start != dp->width_end)
+-		  {
+-		    if (dp->width_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->width_arg_index].a.a_int;
+-			if (arg < 0)
+-			  {
+-			    /* "A negative field width is taken as a '-' flag
+-			        followed by a positive field width."  */
+-			    flags |= FLAG_LEFT;
+-			    width = (unsigned int) (-arg);
+-			  }
+-			else
+-			  width = arg;
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->width_start;
+-
+-			do
+-			  width = xsum (xtimes (width, 10), *digitp++ - '0');
+-			while (digitp != dp->width_end);
+-		      }
+-		    has_width = 1;
+-		  }
+-
+-		has_precision = 0;
+-		precision = 0;
+-		if (dp->precision_start != dp->precision_end)
+-		  {
+-		    if (dp->precision_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->precision_arg_index].a.a_int;
+-			/* "A negative precision is taken as if the precision
+-			    were omitted."  */
+-			if (arg >= 0)
+-			  {
+-			    precision = arg;
+-			    has_precision = 1;
+-			  }
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->precision_start + 1;
+-
+-			precision = 0;
+-			while (digitp != dp->precision_end)
+-			  precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+-			has_precision = 1;
+-		      }
+-		  }
+-
+-		/* Allocate a temporary buffer of sufficient size.  */
+-		if (type == TYPE_LONGDOUBLE)
+-		  tmp_length =
+-		    (unsigned int) ((LDBL_DIG + 1)
+-				    * 0.831 /* decimal -> hexadecimal */
+-				   )
+-		    + 1; /* turn floor into ceil */
+-		else
+-		  tmp_length =
+-		    (unsigned int) ((DBL_DIG + 1)
+-				    * 0.831 /* decimal -> hexadecimal */
+-				   )
+-		    + 1; /* turn floor into ceil */
+-		if (tmp_length < precision)
+-		  tmp_length = precision;
+-		/* Account for sign, decimal point etc. */
+-		tmp_length = xsum (tmp_length, 12);
+-
+-		if (tmp_length < width)
+-		  tmp_length = width;
+-
+-		tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+-
+-		if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
+-		  tmp = tmpbuf;
+-		else
+-		  {
+-		    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
+-
+-		    if (size_overflow_p (tmp_memsize))
+-		      /* Overflow, would lead to out of memory.  */
+-		      goto out_of_memory;
+-		    tmp = (DCHAR_T *) malloc (tmp_memsize);
+-		    if (tmp == NULL)
+-		      /* Out of memory.  */
+-		      goto out_of_memory;
+-		  }
+-
+-		pad_ptr = NULL;
+-		p = tmp;
+-		if (type == TYPE_LONGDOUBLE)
+-		  {
+-# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE
+-		    long double arg = a.arg[dp->arg_index].a.a_longdouble;
+-
+-		    if (isnanl (arg))
+-		      {
+-			if (dp->conversion == 'A')
+-			  {
+-			    *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+-			  }
+-			else
+-			  {
+-			    *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+-			  }
+-		      }
+-		    else
+-		      {
+-			int sign = 0;
+-			DECL_LONG_DOUBLE_ROUNDING
+-
+-			BEGIN_LONG_DOUBLE_ROUNDING ();
+-
+-			if (signbit (arg)) /* arg < 0.0L or negative zero */
+-			  {
+-			    sign = -1;
+-			    arg = -arg;
+-			  }
+-
+-			if (sign < 0)
+-			  *p++ = '-';
+-			else if (flags & FLAG_SHOWSIGN)
+-			  *p++ = '+';
+-			else if (flags & FLAG_SPACE)
+-			  *p++ = ' ';
+-
+-			if (arg > 0.0L && arg + arg == arg)
+-			  {
+-			    if (dp->conversion == 'A')
+-			      {
+-				*p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+-			      }
+-			    else
+-			      {
+-				*p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+-			      }
+-			  }
+-			else
+-			  {
+-			    int exponent;
+-			    long double mantissa;
+-
+-			    if (arg > 0.0L)
+-			      mantissa = printf_frexpl (arg, &exponent);
+-			    else
+-			      {
+-				exponent = 0;
+-				mantissa = 0.0L;
+-			      }
+-
+-			    if (has_precision
+-				&& precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1)
+-			      {
+-				/* Round the mantissa.  */
+-				long double tail = mantissa;
+-				size_t q;
+-
+-				for (q = precision; ; q--)
+-				  {
+-				    int digit = (int) tail;
+-				    tail -= digit;
+-				    if (q == 0)
+-				      {
+-					if (digit & 1 ? tail >= 0.5L : tail > 0.5L)
+-					  tail = 1 - tail;
+-					else
+-					  tail = - tail;
+-					break;
+-				      }
+-				    tail *= 16.0L;
+-				  }
+-				if (tail != 0.0L)
+-				  for (q = precision; q > 0; q--)
+-				    tail *= 0.0625L;
+-				mantissa += tail;
+-			      }
+-
+-			    *p++ = '0';
+-			    *p++ = dp->conversion - 'A' + 'X';
+-			    pad_ptr = p;
+-			    {
+-			      int digit;
+-
+-			      digit = (int) mantissa;
+-			      mantissa -= digit;
+-			      *p++ = '0' + digit;
+-			      if ((flags & FLAG_ALT)
+-				  || mantissa > 0.0L || precision > 0)
+-				{
+-				  *p++ = decimal_point_char ();
+-				  /* This loop terminates because we assume
+-				     that FLT_RADIX is a power of 2.  */
+-				  while (mantissa > 0.0L)
+-				    {
+-				      mantissa *= 16.0L;
+-				      digit = (int) mantissa;
+-				      mantissa -= digit;
+-				      *p++ = digit
+-					     + (digit < 10
+-						? '0'
+-						: dp->conversion - 10);
+-				      if (precision > 0)
+-					precision--;
+-				    }
+-				  while (precision > 0)
+-				    {
+-				      *p++ = '0';
+-				      precision--;
+-				    }
+-				}
+-			      }
+-			      *p++ = dp->conversion - 'A' + 'P';
+-#  if WIDE_CHAR_VERSION
+-			      {
+-				static const wchar_t decimal_format[] =
+-				  { '%', '+', 'd', '\0' };
+-				SNPRINTF (p, 6 + 1, decimal_format, exponent);
+-			      }
+-			      while (*p != '\0')
+-				p++;
+-#  else
+-			      if (sizeof (DCHAR_T) == 1)
+-				{
+-				  sprintf ((char *) p, "%+d", exponent);
+-				  while (*p != '\0')
+-				    p++;
+-				}
+-			      else
+-				{
+-				  char expbuf[6 + 1];
+-				  const char *ep;
+-				  sprintf (expbuf, "%+d", exponent);
+-				  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+-				    p++;
+-				}
+-#  endif
+-			  }
+-
+-			END_LONG_DOUBLE_ROUNDING ();
+-		      }
+-# else
+-		    abort ();
+-# endif
+-		  }
+-		else
+-		  {
+-# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE
+-		    double arg = a.arg[dp->arg_index].a.a_double;
+-
+-		    if (isnan (arg))
+-		      {
+-			if (dp->conversion == 'A')
+-			  {
+-			    *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+-			  }
+-			else
+-			  {
+-			    *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+-			  }
+-		      }
+-		    else
+-		      {
+-			int sign = 0;
+-
+-			if (signbit (arg)) /* arg < 0.0 or negative zero */
+-			  {
+-			    sign = -1;
+-			    arg = -arg;
+-			  }
+-
+-			if (sign < 0)
+-			  *p++ = '-';
+-			else if (flags & FLAG_SHOWSIGN)
+-			  *p++ = '+';
+-			else if (flags & FLAG_SPACE)
+-			  *p++ = ' ';
+-
+-			if (arg > 0.0 && arg + arg == arg)
+-			  {
+-			    if (dp->conversion == 'A')
+-			      {
+-				*p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+-			      }
+-			    else
+-			      {
+-				*p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+-			      }
+-			  }
+-			else
+-			  {
+-			    int exponent;
+-			    double mantissa;
+-
+-			    if (arg > 0.0)
+-			      mantissa = printf_frexp (arg, &exponent);
+-			    else
+-			      {
+-				exponent = 0;
+-				mantissa = 0.0;
+-			      }
+-
+-			    if (has_precision
+-				&& precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1)
+-			      {
+-				/* Round the mantissa.  */
+-				double tail = mantissa;
+-				size_t q;
+-
+-				for (q = precision; ; q--)
+-				  {
+-				    int digit = (int) tail;
+-				    tail -= digit;
+-				    if (q == 0)
+-				      {
+-					if (digit & 1 ? tail >= 0.5 : tail > 0.5)
+-					  tail = 1 - tail;
+-					else
+-					  tail = - tail;
+-					break;
+-				      }
+-				    tail *= 16.0;
+-				  }
+-				if (tail != 0.0)
+-				  for (q = precision; q > 0; q--)
+-				    tail *= 0.0625;
+-				mantissa += tail;
+-			      }
+-
+-			    *p++ = '0';
+-			    *p++ = dp->conversion - 'A' + 'X';
+-			    pad_ptr = p;
+-			    {
+-			      int digit;
+-
+-			      digit = (int) mantissa;
+-			      mantissa -= digit;
+-			      *p++ = '0' + digit;
+-			      if ((flags & FLAG_ALT)
+-				  || mantissa > 0.0 || precision > 0)
+-				{
+-				  *p++ = decimal_point_char ();
+-				  /* This loop terminates because we assume
+-				     that FLT_RADIX is a power of 2.  */
+-				  while (mantissa > 0.0)
+-				    {
+-				      mantissa *= 16.0;
+-				      digit = (int) mantissa;
+-				      mantissa -= digit;
+-				      *p++ = digit
+-					     + (digit < 10
+-						? '0'
+-						: dp->conversion - 10);
+-				      if (precision > 0)
+-					precision--;
+-				    }
+-				  while (precision > 0)
+-				    {
+-				      *p++ = '0';
+-				      precision--;
+-				    }
+-				}
+-			      }
+-			      *p++ = dp->conversion - 'A' + 'P';
+-#  if WIDE_CHAR_VERSION
+-			      {
+-				static const wchar_t decimal_format[] =
+-				  { '%', '+', 'd', '\0' };
+-				SNPRINTF (p, 6 + 1, decimal_format, exponent);
+-			      }
+-			      while (*p != '\0')
+-				p++;
+-#  else
+-			      if (sizeof (DCHAR_T) == 1)
+-				{
+-				  sprintf ((char *) p, "%+d", exponent);
+-				  while (*p != '\0')
+-				    p++;
+-				}
+-			      else
+-				{
+-				  char expbuf[6 + 1];
+-				  const char *ep;
+-				  sprintf (expbuf, "%+d", exponent);
+-				  for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+-				    p++;
+-				}
+-#  endif
+-			  }
+-		      }
+-# else
+-		    abort ();
+-# endif
+-		  }
+-		/* The generated string now extends from tmp to p, with the
+-		   zero padding insertion point being at pad_ptr.  */
+-		if (has_width && p - tmp < width)
+-		  {
+-		    size_t pad = width - (p - tmp);
+-		    DCHAR_T *end = p + pad;
+-
+-		    if (flags & FLAG_LEFT)
+-		      {
+-			/* Pad with spaces on the right.  */
+-			for (; pad > 0; pad--)
+-			  *p++ = ' ';
+-		      }
+-		    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+-		      {
+-			/* Pad with zeroes.  */
+-			DCHAR_T *q = end;
+-
+-			while (p > pad_ptr)
+-			  *--q = *--p;
+-			for (; pad > 0; pad--)
+-			  *p++ = '0';
+-		      }
+-		    else
+-		      {
+-			/* Pad with spaces on the left.  */
+-			DCHAR_T *q = end;
+-
+-			while (p > tmp)
+-			  *--q = *--p;
+-			for (; pad > 0; pad--)
+-			  *p++ = ' ';
+-		      }
+-
+-		    p = end;
+-		  }
+-
+-		{
+-		  size_t count = p - tmp;
+-
+-		  if (count >= tmp_length)
+-		    /* tmp_length was incorrectly calculated - fix the
+-		       code above!  */
+-		    abort ();
+-
+-		  /* Make room for the result.  */
+-		  if (count >= allocated - length)
+-		    {
+-		      size_t n = xsum (length, count);
+-
+-		      ENSURE_ALLOCATION (n);
+-		    }
+-
+-		  /* Append the result.  */
+-		  memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+-		  if (tmp != tmpbuf)
+-		    free (tmp);
+-		  length += count;
+-		}
+-	      }
+-#endif
+-#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
+-	    else if ((dp->conversion == 'f' || dp->conversion == 'F'
+-		      || dp->conversion == 'e' || dp->conversion == 'E'
+-		      || dp->conversion == 'g' || dp->conversion == 'G'
+-		      || dp->conversion == 'a' || dp->conversion == 'A')
+-		     && (0
+-# if NEED_PRINTF_DOUBLE
+-			 || a.arg[dp->arg_index].type == TYPE_DOUBLE
+-# elif NEED_PRINTF_INFINITE_DOUBLE
+-			 || (a.arg[dp->arg_index].type == TYPE_DOUBLE
+-			     /* The systems (mingw) which produce wrong output
+-				for Inf, -Inf, and NaN also do so for -0.0.
+-				Therefore we treat this case here as well.  */
+-			     && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double))
+-# endif
+-# if NEED_PRINTF_LONG_DOUBLE
+-			 || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+-# elif NEED_PRINTF_INFINITE_LONG_DOUBLE
+-			 || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE
+-			     /* Some systems produce wrong output for Inf,
+-				-Inf, and NaN.  */
+-			     && is_infinitel (a.arg[dp->arg_index].a.a_longdouble))
+-# endif
+-			))
+-	      {
+-# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE)
+-		arg_type type = a.arg[dp->arg_index].type;
+-# endif
+-		int flags = dp->flags;
+-		int has_width;
+-		size_t width;
+-		int has_precision;
+-		size_t precision;
+-		size_t tmp_length;
+-		DCHAR_T tmpbuf[700];
+-		DCHAR_T *tmp;
+-		DCHAR_T *pad_ptr;
+-		DCHAR_T *p;
+-
+-		has_width = 0;
+-		width = 0;
+-		if (dp->width_start != dp->width_end)
+-		  {
+-		    if (dp->width_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->width_arg_index].a.a_int;
+-			if (arg < 0)
+-			  {
+-			    /* "A negative field width is taken as a '-' flag
+-			        followed by a positive field width."  */
+-			    flags |= FLAG_LEFT;
+-			    width = (unsigned int) (-arg);
+-			  }
+-			else
+-			  width = arg;
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->width_start;
+-
+-			do
+-			  width = xsum (xtimes (width, 10), *digitp++ - '0');
+-			while (digitp != dp->width_end);
+-		      }
+-		    has_width = 1;
+-		  }
+-
+-		has_precision = 0;
+-		precision = 0;
+-		if (dp->precision_start != dp->precision_end)
+-		  {
+-		    if (dp->precision_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->precision_arg_index].a.a_int;
+-			/* "A negative precision is taken as if the precision
+-			    were omitted."  */
+-			if (arg >= 0)
+-			  {
+-			    precision = arg;
+-			    has_precision = 1;
+-			  }
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->precision_start + 1;
+-
+-			precision = 0;
+-			while (digitp != dp->precision_end)
+-			  precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+-			has_precision = 1;
+-		      }
+-		  }
+-
+-		/* POSIX specifies the default precision to be 6 for %f, %F,
+-		   %e, %E, but not for %g, %G.  Implementations appear to use
+-		   the same default precision also for %g, %G.  */
+-		if (!has_precision)
+-		  precision = 6;
+-
+-		/* Allocate a temporary buffer of sufficient size.  */
+-# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE
+-		tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1);
+-# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE
+-		tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0);
+-# elif NEED_PRINTF_LONG_DOUBLE
+-		tmp_length = LDBL_DIG + 1;
+-# elif NEED_PRINTF_DOUBLE
+-		tmp_length = DBL_DIG + 1;
+-# else
+-		tmp_length = 0;
+-# endif
+-		if (tmp_length < precision)
+-		  tmp_length = precision;
+-# if NEED_PRINTF_LONG_DOUBLE
+-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+-		if (type == TYPE_LONGDOUBLE)
+-#  endif
+-		  if (dp->conversion == 'f' || dp->conversion == 'F')
+-		    {
+-		      long double arg = a.arg[dp->arg_index].a.a_longdouble;
+-		      if (!(isnanl (arg) || arg + arg == arg))
+-			{
+-			  /* arg is finite and nonzero.  */
+-			  int exponent = floorlog10l (arg < 0 ? -arg : arg);
+-			  if (exponent >= 0 && tmp_length < exponent + precision)
+-			    tmp_length = exponent + precision;
+-			}
+-		    }
+-# endif
+-# if NEED_PRINTF_DOUBLE
+-#  if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
+-		if (type == TYPE_DOUBLE)
+-#  endif
+-		  if (dp->conversion == 'f' || dp->conversion == 'F')
+-		    {
+-		      double arg = a.arg[dp->arg_index].a.a_double;
+-		      if (!(isnan (arg) || arg + arg == arg))
+-			{
+-			  /* arg is finite and nonzero.  */
+-			  int exponent = floorlog10 (arg < 0 ? -arg : arg);
+-			  if (exponent >= 0 && tmp_length < exponent + precision)
+-			    tmp_length = exponent + precision;
+-			}
+-		    }
+-# endif
+-		/* Account for sign, decimal point etc. */
+-		tmp_length = xsum (tmp_length, 12);
+-
+-		if (tmp_length < width)
+-		  tmp_length = width;
+-
+-		tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+-
+-		if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T))
+-		  tmp = tmpbuf;
+-		else
+-		  {
+-		    size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T));
+-
+-		    if (size_overflow_p (tmp_memsize))
+-		      /* Overflow, would lead to out of memory.  */
+-		      goto out_of_memory;
+-		    tmp = (DCHAR_T *) malloc (tmp_memsize);
+-		    if (tmp == NULL)
+-		      /* Out of memory.  */
+-		      goto out_of_memory;
+-		  }
+-
+-		pad_ptr = NULL;
+-		p = tmp;
+-
+-# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE
+-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+-		if (type == TYPE_LONGDOUBLE)
+-#  endif
+-		  {
+-		    long double arg = a.arg[dp->arg_index].a.a_longdouble;
+-
+-		    if (isnanl (arg))
+-		      {
+-			if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+-			  {
+-			    *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+-			  }
+-			else
+-			  {
+-			    *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+-			  }
+-		      }
+-		    else
+-		      {
+-			int sign = 0;
+-			DECL_LONG_DOUBLE_ROUNDING
+-
+-			BEGIN_LONG_DOUBLE_ROUNDING ();
+-
+-			if (signbit (arg)) /* arg < 0.0L or negative zero */
+-			  {
+-			    sign = -1;
+-			    arg = -arg;
+-			  }
+-
+-			if (sign < 0)
+-			  *p++ = '-';
+-			else if (flags & FLAG_SHOWSIGN)
+-			  *p++ = '+';
+-			else if (flags & FLAG_SPACE)
+-			  *p++ = ' ';
+-
+-			if (arg > 0.0L && arg + arg == arg)
+-			  {
+-			    if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+-			      {
+-				*p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+-			      }
+-			    else
+-			      {
+-				*p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+-			      }
+-			  }
+-			else
+-			  {
+-#  if NEED_PRINTF_LONG_DOUBLE
+-			    pad_ptr = p;
+-
+-			    if (dp->conversion == 'f' || dp->conversion == 'F')
+-			      {
+-				char *digits;
+-				size_t ndigits;
+-
+-				digits =
+-				  scale10_round_decimal_long_double (arg, precision);
+-				if (digits == NULL)
+-				  {
+-				    END_LONG_DOUBLE_ROUNDING ();
+-				    goto out_of_memory;
+-				  }
+-				ndigits = strlen (digits);
+-
+-				if (ndigits > precision)
+-				  do
+-				    {
+-				      --ndigits;
+-				      *p++ = digits[ndigits];
+-				    }
+-				  while (ndigits > precision);
+-				else
+-				  *p++ = '0';
+-				/* Here ndigits <= precision.  */
+-				if ((flags & FLAG_ALT) || precision > 0)
+-				  {
+-				    *p++ = decimal_point_char ();
+-				    for (; precision > ndigits; precision--)
+-				      *p++ = '0';
+-				    while (ndigits > 0)
+-				      {
+-					--ndigits;
+-					*p++ = digits[ndigits];
+-				      }
+-				  }
+-
+-				free (digits);
+-			      }
+-			    else if (dp->conversion == 'e' || dp->conversion == 'E')
+-			      {
+-				int exponent;
+-
+-				if (arg == 0.0L)
+-				  {
+-				    exponent = 0;
+-				    *p++ = '0';
+-				    if ((flags & FLAG_ALT) || precision > 0)
+-				      {
+-					*p++ = decimal_point_char ();
+-					for (; precision > 0; precision--)
+-					  *p++ = '0';
+-				      }
+-				  }
+-				else
+-				  {
+-				    /* arg > 0.0L.  */
+-				    int adjusted;
+-				    char *digits;
+-				    size_t ndigits;
+-
+-				    exponent = floorlog10l (arg);
+-				    adjusted = 0;
+-				    for (;;)
+-				      {
+-					digits =
+-					  scale10_round_decimal_long_double (arg,
+-									     (int)precision - exponent);
+-					if (digits == NULL)
+-					  {
+-					    END_LONG_DOUBLE_ROUNDING ();
+-					    goto out_of_memory;
+-					  }
+-					ndigits = strlen (digits);
+-
+-					if (ndigits == precision + 1)
+-					  break;
+-					if (ndigits < precision
+-					    || ndigits > precision + 2)
+-					  /* The exponent was not guessed
+-					     precisely enough.  */
+-					  abort ();
+-					if (adjusted)
+-					  /* None of two values of exponent is
+-					     the right one.  Prevent an endless
+-					     loop.  */
+-					  abort ();
+-					free (digits);
+-					if (ndigits == precision)
+-					  exponent -= 1;
+-					else
+-					  exponent += 1;
+-					adjusted = 1;
+-				      }
+-
+-				    /* Here ndigits = precision+1.  */
+-				    *p++ = digits[--ndigits];
+-				    if ((flags & FLAG_ALT) || precision > 0)
+-				      {
+-					*p++ = decimal_point_char ();
+-					while (ndigits > 0)
+-					  {
+-					    --ndigits;
+-					    *p++ = digits[ndigits];
+-					  }
+-				      }
+-
+-				    free (digits);
+-				  }
+-
+-				*p++ = dp->conversion; /* 'e' or 'E' */
+-#   if WIDE_CHAR_VERSION
+-				{
+-				  static const wchar_t decimal_format[] =
+-				    { '%', '+', '.', '2', 'd', '\0' };
+-				  SNPRINTF (p, 6 + 1, decimal_format, exponent);
+-				}
+-				while (*p != '\0')
+-				  p++;
+-#   else
+-				if (sizeof (DCHAR_T) == 1)
+-				  {
+-				    sprintf ((char *) p, "%+.2d", exponent);
+-				    while (*p != '\0')
+-				      p++;
+-				  }
+-				else
+-				  {
+-				    char expbuf[6 + 1];
+-				    const char *ep;
+-				    sprintf (expbuf, "%+.2d", exponent);
+-				    for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+-				      p++;
+-				  }
+-#   endif
+-			      }
+-			    else if (dp->conversion == 'g' || dp->conversion == 'G')
+-			      {
+-				if (precision == 0)
+-				  precision = 1;
+-				/* precision >= 1.  */
+-
+-				if (arg == 0.0L)
+-				  /* The exponent is 0, >= -4, < precision.
+-				     Use fixed-point notation.  */
+-				  {
+-				    size_t ndigits = precision;
+-				    /* Number of trailing zeroes that have to be
+-				       dropped.  */
+-				    size_t nzeroes =
+-				      (flags & FLAG_ALT ? 0 : precision - 1);
+-
+-				    --ndigits;
+-				    *p++ = '0';
+-				    if ((flags & FLAG_ALT) || ndigits > nzeroes)
+-				      {
+-					*p++ = decimal_point_char ();
+-					while (ndigits > nzeroes)
+-					  {
+-					    --ndigits;
+-					    *p++ = '0';
+-					  }
+-				      }
+-				  }
+-				else
+-				  {
+-				    /* arg > 0.0L.  */
+-				    int exponent;
+-				    int adjusted;
+-				    char *digits;
+-				    size_t ndigits;
+-				    size_t nzeroes;
+-
+-				    exponent = floorlog10l (arg);
+-				    adjusted = 0;
+-				    for (;;)
+-				      {
+-					digits =
+-					  scale10_round_decimal_long_double (arg,
+-									     (int)(precision - 1) - exponent);
+-					if (digits == NULL)
+-					  {
+-					    END_LONG_DOUBLE_ROUNDING ();
+-					    goto out_of_memory;
+-					  }
+-					ndigits = strlen (digits);
+-
+-					if (ndigits == precision)
+-					  break;
+-					if (ndigits < precision - 1
+-					    || ndigits > precision + 1)
+-					  /* The exponent was not guessed
+-					     precisely enough.  */
+-					  abort ();
+-					if (adjusted)
+-					  /* None of two values of exponent is
+-					     the right one.  Prevent an endless
+-					     loop.  */
+-					  abort ();
+-					free (digits);
+-					if (ndigits < precision)
+-					  exponent -= 1;
+-					else
+-					  exponent += 1;
+-					adjusted = 1;
+-				      }
+-				    /* Here ndigits = precision.  */
+-
+-				    /* Determine the number of trailing zeroes
+-				       that have to be dropped.  */
+-				    nzeroes = 0;
+-				    if ((flags & FLAG_ALT) == 0)
+-				      while (nzeroes < ndigits
+-					     && digits[nzeroes] == '0')
+-					nzeroes++;
+-
+-				    /* The exponent is now determined.  */
+-				    if (exponent >= -4
+-					&& exponent < (long)precision)
+-				      {
+-					/* Fixed-point notation:
+-					   max(exponent,0)+1 digits, then the
+-					   decimal point, then the remaining
+-					   digits without trailing zeroes.  */
+-					if (exponent >= 0)
+-					  {
+-					    size_t count = exponent + 1;
+-					    /* Note: count <= precision = ndigits.  */
+-					    for (; count > 0; count--)
+-					      *p++ = digits[--ndigits];
+-					    if ((flags & FLAG_ALT) || ndigits > nzeroes)
+-					      {
+-						*p++ = decimal_point_char ();
+-						while (ndigits > nzeroes)
+-						  {
+-						    --ndigits;
+-						    *p++ = digits[ndigits];
+-						  }
+-					      }
+-					  }
+-					else
+-					  {
+-					    size_t count = -exponent - 1;
+-					    *p++ = '0';
+-					    *p++ = decimal_point_char ();
+-					    for (; count > 0; count--)
+-					      *p++ = '0';
+-					    while (ndigits > nzeroes)
+-					      {
+-						--ndigits;
+-						*p++ = digits[ndigits];
+-					      }
+-					  }
+-				      }
+-				    else
+-				      {
+-					/* Exponential notation.  */
+-					*p++ = digits[--ndigits];
+-					if ((flags & FLAG_ALT) || ndigits > nzeroes)
+-					  {
+-					    *p++ = decimal_point_char ();
+-					    while (ndigits > nzeroes)
+-					      {
+-						--ndigits;
+-						*p++ = digits[ndigits];
+-					      }
+-					  }
+-					*p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
+-#   if WIDE_CHAR_VERSION
+-					{
+-					  static const wchar_t decimal_format[] =
+-					    { '%', '+', '.', '2', 'd', '\0' };
+-					  SNPRINTF (p, 6 + 1, decimal_format, exponent);
+-					}
+-					while (*p != '\0')
+-					  p++;
+-#   else
+-					if (sizeof (DCHAR_T) == 1)
+-					  {
+-					    sprintf ((char *) p, "%+.2d", exponent);
+-					    while (*p != '\0')
+-					      p++;
+-					  }
+-					else
+-					  {
+-					    char expbuf[6 + 1];
+-					    const char *ep;
+-					    sprintf (expbuf, "%+.2d", exponent);
+-					    for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+-					      p++;
+-					  }
+-#   endif
+-				      }
+-
+-				    free (digits);
+-				  }
+-			      }
+-			    else
+-			      abort ();
+-#  else
+-			    /* arg is finite.  */
+-			    abort ();
+-#  endif
+-			  }
+-
+-			END_LONG_DOUBLE_ROUNDING ();
+-		      }
+-		  }
+-#  if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+-		else
+-#  endif
+-# endif
+-# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE
+-		  {
+-		    double arg = a.arg[dp->arg_index].a.a_double;
+-
+-		    if (isnan (arg))
+-		      {
+-			if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+-			  {
+-			    *p++ = 'N'; *p++ = 'A'; *p++ = 'N';
+-			  }
+-			else
+-			  {
+-			    *p++ = 'n'; *p++ = 'a'; *p++ = 'n';
+-			  }
+-		      }
+-		    else
+-		      {
+-			int sign = 0;
+-
+-			if (signbit (arg)) /* arg < 0.0 or negative zero */
+-			  {
+-			    sign = -1;
+-			    arg = -arg;
+-			  }
+-
+-			if (sign < 0)
+-			  *p++ = '-';
+-			else if (flags & FLAG_SHOWSIGN)
+-			  *p++ = '+';
+-			else if (flags & FLAG_SPACE)
+-			  *p++ = ' ';
+-
+-			if (arg > 0.0 && arg + arg == arg)
+-			  {
+-			    if (dp->conversion >= 'A' && dp->conversion <= 'Z')
+-			      {
+-				*p++ = 'I'; *p++ = 'N'; *p++ = 'F';
+-			      }
+-			    else
+-			      {
+-				*p++ = 'i'; *p++ = 'n'; *p++ = 'f';
+-			      }
+-			  }
+-			else
+-			  {
+-#  if NEED_PRINTF_DOUBLE
+-			    pad_ptr = p;
+-
+-			    if (dp->conversion == 'f' || dp->conversion == 'F')
+-			      {
+-				char *digits;
+-				size_t ndigits;
+-
+-				digits =
+-				  scale10_round_decimal_double (arg, precision);
+-				if (digits == NULL)
+-				  goto out_of_memory;
+-				ndigits = strlen (digits);
+-
+-				if (ndigits > precision)
+-				  do
+-				    {
+-				      --ndigits;
+-				      *p++ = digits[ndigits];
+-				    }
+-				  while (ndigits > precision);
+-				else
+-				  *p++ = '0';
+-				/* Here ndigits <= precision.  */
+-				if ((flags & FLAG_ALT) || precision > 0)
+-				  {
+-				    *p++ = decimal_point_char ();
+-				    for (; precision > ndigits; precision--)
+-				      *p++ = '0';
+-				    while (ndigits > 0)
+-				      {
+-					--ndigits;
+-					*p++ = digits[ndigits];
+-				      }
+-				  }
+-
+-				free (digits);
+-			      }
+-			    else if (dp->conversion == 'e' || dp->conversion == 'E')
+-			      {
+-				int exponent;
+-
+-				if (arg == 0.0)
+-				  {
+-				    exponent = 0;
+-				    *p++ = '0';
+-				    if ((flags & FLAG_ALT) || precision > 0)
+-				      {
+-					*p++ = decimal_point_char ();
+-					for (; precision > 0; precision--)
+-					  *p++ = '0';
+-				      }
+-				  }
+-				else
+-				  {
+-				    /* arg > 0.0.  */
+-				    int adjusted;
+-				    char *digits;
+-				    size_t ndigits;
+-
+-				    exponent = floorlog10 (arg);
+-				    adjusted = 0;
+-				    for (;;)
+-				      {
+-					digits =
+-					  scale10_round_decimal_double (arg,
+-									(int)precision - exponent);
+-					if (digits == NULL)
+-					  goto out_of_memory;
+-					ndigits = strlen (digits);
+-
+-					if (ndigits == precision + 1)
+-					  break;
+-					if (ndigits < precision
+-					    || ndigits > precision + 2)
+-					  /* The exponent was not guessed
+-					     precisely enough.  */
+-					  abort ();
+-					if (adjusted)
+-					  /* None of two values of exponent is
+-					     the right one.  Prevent an endless
+-					     loop.  */
+-					  abort ();
+-					free (digits);
+-					if (ndigits == precision)
+-					  exponent -= 1;
+-					else
+-					  exponent += 1;
+-					adjusted = 1;
+-				      }
+-
+-				    /* Here ndigits = precision+1.  */
+-				    *p++ = digits[--ndigits];
+-				    if ((flags & FLAG_ALT) || precision > 0)
+-				      {
+-					*p++ = decimal_point_char ();
+-					while (ndigits > 0)
+-					  {
+-					    --ndigits;
+-					    *p++ = digits[ndigits];
+-					  }
+-				      }
+-
+-				    free (digits);
+-				  }
+-
+-				*p++ = dp->conversion; /* 'e' or 'E' */
+-#   if WIDE_CHAR_VERSION
+-				{
+-				  static const wchar_t decimal_format[] =
+-				    /* Produce the same number of exponent digits
+-				       as the native printf implementation.  */
+-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+-				    { '%', '+', '.', '3', 'd', '\0' };
+-#    else
+-				    { '%', '+', '.', '2', 'd', '\0' };
+-#    endif
+-				  SNPRINTF (p, 6 + 1, decimal_format, exponent);
+-				}
+-				while (*p != '\0')
+-				  p++;
+-#   else
+-				{
+-				  static const char decimal_format[] =
+-				    /* Produce the same number of exponent digits
+-				       as the native printf implementation.  */
+-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+-				    "%+.3d";
+-#    else
+-				    "%+.2d";
+-#    endif
+-				  if (sizeof (DCHAR_T) == 1)
+-				    {
+-				      sprintf ((char *) p, decimal_format, exponent);
+-				      while (*p != '\0')
+-					p++;
+-				    }
+-				  else
+-				    {
+-				      char expbuf[6 + 1];
+-				      const char *ep;
+-				      sprintf (expbuf, decimal_format, exponent);
+-				      for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+-					p++;
+-				    }
+-				}
+-#   endif
+-			      }
+-			    else if (dp->conversion == 'g' || dp->conversion == 'G')
+-			      {
+-				if (precision == 0)
+-				  precision = 1;
+-				/* precision >= 1.  */
+-
+-				if (arg == 0.0)
+-				  /* The exponent is 0, >= -4, < precision.
+-				     Use fixed-point notation.  */
+-				  {
+-				    size_t ndigits = precision;
+-				    /* Number of trailing zeroes that have to be
+-				       dropped.  */
+-				    size_t nzeroes =
+-				      (flags & FLAG_ALT ? 0 : precision - 1);
+-
+-				    --ndigits;
+-				    *p++ = '0';
+-				    if ((flags & FLAG_ALT) || ndigits > nzeroes)
+-				      {
+-					*p++ = decimal_point_char ();
+-					while (ndigits > nzeroes)
+-					  {
+-					    --ndigits;
+-					    *p++ = '0';
+-					  }
+-				      }
+-				  }
+-				else
+-				  {
+-				    /* arg > 0.0.  */
+-				    int exponent;
+-				    int adjusted;
+-				    char *digits;
+-				    size_t ndigits;
+-				    size_t nzeroes;
+-
+-				    exponent = floorlog10 (arg);
+-				    adjusted = 0;
+-				    for (;;)
+-				      {
+-					digits =
+-					  scale10_round_decimal_double (arg,
+-									(int)(precision - 1) - exponent);
+-					if (digits == NULL)
+-					  goto out_of_memory;
+-					ndigits = strlen (digits);
+-
+-					if (ndigits == precision)
+-					  break;
+-					if (ndigits < precision - 1
+-					    || ndigits > precision + 1)
+-					  /* The exponent was not guessed
+-					     precisely enough.  */
+-					  abort ();
+-					if (adjusted)
+-					  /* None of two values of exponent is
+-					     the right one.  Prevent an endless
+-					     loop.  */
+-					  abort ();
+-					free (digits);
+-					if (ndigits < precision)
+-					  exponent -= 1;
+-					else
+-					  exponent += 1;
+-					adjusted = 1;
+-				      }
+-				    /* Here ndigits = precision.  */
+-
+-				    /* Determine the number of trailing zeroes
+-				       that have to be dropped.  */
+-				    nzeroes = 0;
+-				    if ((flags & FLAG_ALT) == 0)
+-				      while (nzeroes < ndigits
+-					     && digits[nzeroes] == '0')
+-					nzeroes++;
+-
+-				    /* The exponent is now determined.  */
+-				    if (exponent >= -4
+-					&& exponent < (long)precision)
+-				      {
+-					/* Fixed-point notation:
+-					   max(exponent,0)+1 digits, then the
+-					   decimal point, then the remaining
+-					   digits without trailing zeroes.  */
+-					if (exponent >= 0)
+-					  {
+-					    size_t count = exponent + 1;
+-					    /* Note: count <= precision = ndigits.  */
+-					    for (; count > 0; count--)
+-					      *p++ = digits[--ndigits];
+-					    if ((flags & FLAG_ALT) || ndigits > nzeroes)
+-					      {
+-						*p++ = decimal_point_char ();
+-						while (ndigits > nzeroes)
+-						  {
+-						    --ndigits;
+-						    *p++ = digits[ndigits];
+-						  }
+-					      }
+-					  }
+-					else
+-					  {
+-					    size_t count = -exponent - 1;
+-					    *p++ = '0';
+-					    *p++ = decimal_point_char ();
+-					    for (; count > 0; count--)
+-					      *p++ = '0';
+-					    while (ndigits > nzeroes)
+-					      {
+-						--ndigits;
+-						*p++ = digits[ndigits];
+-					      }
+-					  }
+-				      }
+-				    else
+-				      {
+-					/* Exponential notation.  */
+-					*p++ = digits[--ndigits];
+-					if ((flags & FLAG_ALT) || ndigits > nzeroes)
+-					  {
+-					    *p++ = decimal_point_char ();
+-					    while (ndigits > nzeroes)
+-					      {
+-						--ndigits;
+-						*p++ = digits[ndigits];
+-					      }
+-					  }
+-					*p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */
+-#   if WIDE_CHAR_VERSION
+-					{
+-					  static const wchar_t decimal_format[] =
+-					    /* Produce the same number of exponent digits
+-					       as the native printf implementation.  */
+-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+-					    { '%', '+', '.', '3', 'd', '\0' };
+-#    else
+-					    { '%', '+', '.', '2', 'd', '\0' };
+-#    endif
+-					  SNPRINTF (p, 6 + 1, decimal_format, exponent);
+-					}
+-					while (*p != '\0')
+-					  p++;
+-#   else
+-					{
+-					  static const char decimal_format[] =
+-					    /* Produce the same number of exponent digits
+-					       as the native printf implementation.  */
+-#    if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+-					    "%+.3d";
+-#    else
+-					    "%+.2d";
+-#    endif
+-					  if (sizeof (DCHAR_T) == 1)
+-					    {
+-					      sprintf ((char *) p, decimal_format, exponent);
+-					      while (*p != '\0')
+-						p++;
+-					    }
+-					  else
+-					    {
+-					      char expbuf[6 + 1];
+-					      const char *ep;
+-					      sprintf (expbuf, decimal_format, exponent);
+-					      for (ep = expbuf; (*p = *ep) != '\0'; ep++)
+-						p++;
+-					    }
+-					}
+-#   endif
+-				      }
+-
+-				    free (digits);
+-				  }
+-			      }
+-			    else
+-			      abort ();
+-#  else
+-			    /* arg is finite.  */
+-			    if (!(arg == 0.0))
+-			      abort ();
+-
+-			    pad_ptr = p;
+-
+-			    if (dp->conversion == 'f' || dp->conversion == 'F')
+-			      {
+-				*p++ = '0';
+-				if ((flags & FLAG_ALT) || precision > 0)
+-				  {
+-				    *p++ = decimal_point_char ();
+-				    for (; precision > 0; precision--)
+-				      *p++ = '0';
+-				  }
+-			      }
+-			    else if (dp->conversion == 'e' || dp->conversion == 'E')
+-			      {
+-				*p++ = '0';
+-				if ((flags & FLAG_ALT) || precision > 0)
+-				  {
+-				    *p++ = decimal_point_char ();
+-				    for (; precision > 0; precision--)
+-				      *p++ = '0';
+-				  }
+-				*p++ = dp->conversion; /* 'e' or 'E' */
+-				*p++ = '+';
+-				/* Produce the same number of exponent digits as
+-				   the native printf implementation.  */
+-#   if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+-				*p++ = '0';
+-#   endif
+-				*p++ = '0';
+-				*p++ = '0';
+-			      }
+-			    else if (dp->conversion == 'g' || dp->conversion == 'G')
+-			      {
+-				*p++ = '0';
+-				if (flags & FLAG_ALT)
+-				  {
+-				    size_t ndigits =
+-				      (precision > 0 ? precision - 1 : 0);
+-				    *p++ = decimal_point_char ();
+-				    for (; ndigits > 0; --ndigits)
+-				      *p++ = '0';
+-				  }
+-			      }
+-			    else
+-			      abort ();
+-#  endif
+-			  }
+-		      }
+-		  }
+-# endif
+-
+-		/* The generated string now extends from tmp to p, with the
+-		   zero padding insertion point being at pad_ptr.  */
+-		if (has_width && p - tmp < width)
+-		  {
+-		    size_t pad = width - (p - tmp);
+-		    DCHAR_T *end = p + pad;
+-
+-		    if (flags & FLAG_LEFT)
+-		      {
+-			/* Pad with spaces on the right.  */
+-			for (; pad > 0; pad--)
+-			  *p++ = ' ';
+-		      }
+-		    else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+-		      {
+-			/* Pad with zeroes.  */
+-			DCHAR_T *q = end;
+-
+-			while (p > pad_ptr)
+-			  *--q = *--p;
+-			for (; pad > 0; pad--)
+-			  *p++ = '0';
+-		      }
+-		    else
+-		      {
+-			/* Pad with spaces on the left.  */
+-			DCHAR_T *q = end;
+-
+-			while (p > tmp)
+-			  *--q = *--p;
+-			for (; pad > 0; pad--)
+-			  *p++ = ' ';
+-		      }
+-
+-		    p = end;
+-		  }
+-
+-		{
+-		  size_t count = p - tmp;
+-
+-		  if (count >= tmp_length)
+-		    /* tmp_length was incorrectly calculated - fix the
+-		       code above!  */
+-		    abort ();
+-
+-		  /* Make room for the result.  */
+-		  if (count >= allocated - length)
+-		    {
+-		      size_t n = xsum (length, count);
+-
+-		      ENSURE_ALLOCATION (n);
+-		    }
+-
+-		  /* Append the result.  */
+-		  memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+-		  if (tmp != tmpbuf)
+-		    free (tmp);
+-		  length += count;
+-		}
+-	      }
+-#endif
+-	    else
+-	      {
+-		arg_type type = a.arg[dp->arg_index].type;
+-		int flags = dp->flags;
+-#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+-		int has_width;
+-		size_t width;
+-#endif
+-#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+-		int has_precision;
+-		size_t precision;
+-#endif
+-#if NEED_PRINTF_UNBOUNDED_PRECISION
+-		int prec_ourselves;
+-#else
+-#		define prec_ourselves 0
+-#endif
+-#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+-		int pad_ourselves;
+-#else
+-#		define pad_ourselves 0
+-#endif
+-		TCHAR_T *fbp;
+-		unsigned int prefix_count;
+-		int prefixes[2];
+-#if !USE_SNPRINTF
+-		size_t tmp_length;
+-		TCHAR_T tmpbuf[700];
+-		TCHAR_T *tmp;
+-#endif
+-
+-#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+-		has_width = 0;
+-		width = 0;
+-		if (dp->width_start != dp->width_end)
+-		  {
+-		    if (dp->width_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->width_arg_index].a.a_int;
+-			if (arg < 0)
+-			  {
+-			    /* "A negative field width is taken as a '-' flag
+-			        followed by a positive field width."  */
+-			    flags |= FLAG_LEFT;
+-			    width = (unsigned int) (-arg);
+-			  }
+-			else
+-			  width = arg;
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->width_start;
+-
+-			do
+-			  width = xsum (xtimes (width, 10), *digitp++ - '0');
+-			while (digitp != dp->width_end);
+-		      }
+-		    has_width = 1;
+-		  }
+-#endif
+-
+-#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+-		has_precision = 0;
+-		precision = 6;
+-		if (dp->precision_start != dp->precision_end)
+-		  {
+-		    if (dp->precision_arg_index != ARG_NONE)
+-		      {
+-			int arg;
+-
+-			if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+-			  abort ();
+-			arg = a.arg[dp->precision_arg_index].a.a_int;
+-			/* "A negative precision is taken as if the precision
+-			    were omitted."  */
+-			if (arg >= 0)
+-			  {
+-			    precision = arg;
+-			    has_precision = 1;
+-			  }
+-		      }
+-		    else
+-		      {
+-			const FCHAR_T *digitp = dp->precision_start + 1;
+-
+-			precision = 0;
+-			while (digitp != dp->precision_end)
+-			  precision = xsum (xtimes (precision, 10), *digitp++ - '0');
+-			has_precision = 1;
+-		      }
+-		  }
+-#endif
+-
+-#if !USE_SNPRINTF
+-		/* Allocate a temporary buffer of sufficient size for calling
+-		   sprintf.  */
+-		{
+-		  switch (dp->conversion)
+-		    {
+-
+-		    case 'd': case 'i': case 'u':
+-# if HAVE_LONG_LONG_INT
+-		      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+-					  * 0.30103 /* binary -> decimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-# endif
+-		      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+-					  * 0.30103 /* binary -> decimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+-					  * 0.30103 /* binary -> decimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      if (tmp_length < precision)
+-			tmp_length = precision;
+-		      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
+-		      tmp_length = xsum (tmp_length, tmp_length);
+-		      /* Add 1, to account for a leading sign.  */
+-		      tmp_length = xsum (tmp_length, 1);
+-		      break;
+-
+-		    case 'o':
+-# if HAVE_LONG_LONG_INT
+-		      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+-					  * 0.333334 /* binary -> octal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-# endif
+-		      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+-					  * 0.333334 /* binary -> octal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+-					  * 0.333334 /* binary -> octal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      if (tmp_length < precision)
+-			tmp_length = precision;
+-		      /* Add 1, to account for a leading sign.  */
+-		      tmp_length = xsum (tmp_length, 1);
+-		      break;
+-
+-		    case 'x': case 'X':
+-# if HAVE_LONG_LONG_INT
+-		      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+-					  * 0.25 /* binary -> hexadecimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-# endif
+-		      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+-					  * 0.25 /* binary -> hexadecimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-			tmp_length =
+-			  (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+-					  * 0.25 /* binary -> hexadecimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      if (tmp_length < precision)
+-			tmp_length = precision;
+-		      /* Add 2, to account for a leading sign or alternate form.  */
+-		      tmp_length = xsum (tmp_length, 2);
+-		      break;
+-
+-		    case 'f': case 'F':
+-		      if (type == TYPE_LONGDOUBLE)
+-			tmp_length =
+-			  (unsigned int) (LDBL_MAX_EXP
+-					  * 0.30103 /* binary -> decimal */
+-					  * 2 /* estimate for FLAG_GROUP */
+-					 )
+-			  + 1 /* turn floor into ceil */
+-			  + 10; /* sign, decimal point etc. */
+-		      else
+-			tmp_length =
+-			  (unsigned int) (DBL_MAX_EXP
+-					  * 0.30103 /* binary -> decimal */
+-					  * 2 /* estimate for FLAG_GROUP */
+-					 )
+-			  + 1 /* turn floor into ceil */
+-			  + 10; /* sign, decimal point etc. */
+-		      tmp_length = xsum (tmp_length, precision);
+-		      break;
+-
+-		    case 'e': case 'E': case 'g': case 'G':
+-		      tmp_length =
+-			12; /* sign, decimal point, exponent etc. */
+-		      tmp_length = xsum (tmp_length, precision);
+-		      break;
+-
+-		    case 'a': case 'A':
+-		      if (type == TYPE_LONGDOUBLE)
+-			tmp_length =
+-			  (unsigned int) (LDBL_DIG
+-					  * 0.831 /* decimal -> hexadecimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      else
+-			tmp_length =
+-			  (unsigned int) (DBL_DIG
+-					  * 0.831 /* decimal -> hexadecimal */
+-					 )
+-			  + 1; /* turn floor into ceil */
+-		      if (tmp_length < precision)
+-			tmp_length = precision;
+-		      /* Account for sign, decimal point etc. */
+-		      tmp_length = xsum (tmp_length, 12);
+-		      break;
+-
+-		    case 'c':
+-# if HAVE_WINT_T && !WIDE_CHAR_VERSION
+-		      if (type == TYPE_WIDE_CHAR)
+-			tmp_length = MB_CUR_MAX;
+-		      else
+-# endif
+-			tmp_length = 1;
+-		      break;
+-
+-		    case 's':
+-# if HAVE_WCHAR_T
+-		      if (type == TYPE_WIDE_STRING)
+-			{
+-			  tmp_length =
+-			    local_wcslen (a.arg[dp->arg_index].a.a_wide_string);
+-
+-#  if !WIDE_CHAR_VERSION
+-			  tmp_length = xtimes (tmp_length, MB_CUR_MAX);
+-#  endif
+-			}
+-		      else
+-# endif
+-			tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
+-		      break;
+-
+-		    case 'p':
+-		      tmp_length =
+-			(unsigned int) (sizeof (void *) * CHAR_BIT
+-					* 0.25 /* binary -> hexadecimal */
+-				       )
+-			  + 1 /* turn floor into ceil */
+-			  + 2; /* account for leading 0x */
+-		      break;
+-
+-		    default:
+-		      abort ();
+-		    }
+-
+-# if ENABLE_UNISTDIO
+-		  /* Padding considers the number of characters, therefore the
+-		     number of elements after padding may be
+-		       > max (tmp_length, width)
+-		     but is certainly
+-		       <= tmp_length + width.  */
+-		  tmp_length = xsum (tmp_length, width);
+-# else
+-		  /* Padding considers the number of elements, says POSIX.  */
+-		  if (tmp_length < width)
+-		    tmp_length = width;
+-# endif
+-
+-		  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+-		}
+-
+-		if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
+-		  tmp = tmpbuf;
+-		else
+-		  {
+-		    size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T));
+-
+-		    if (size_overflow_p (tmp_memsize))
+-		      /* Overflow, would lead to out of memory.  */
+-		      goto out_of_memory;
+-		    tmp = (TCHAR_T *) malloc (tmp_memsize);
+-		    if (tmp == NULL)
+-		      /* Out of memory.  */
+-		      goto out_of_memory;
+-		  }
+-#endif
+-
+-		/* Decide whether to handle the precision ourselves.  */
+-#if NEED_PRINTF_UNBOUNDED_PRECISION
+-		switch (dp->conversion)
+-		  {
+-		  case 'd': case 'i': case 'u':
+-		  case 'o':
+-		  case 'x': case 'X': case 'p':
+-		    prec_ourselves = has_precision && (precision > 0);
+-		    break;
+-		  default:
+-		    prec_ourselves = 0;
+-		    break;
+-		  }
+-#endif
+-
+-		/* Decide whether to perform the padding ourselves.  */
+-#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+-		switch (dp->conversion)
+-		  {
+-# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
+-		  /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need
+-		     to perform the padding after this conversion.  Functions
+-		     with unistdio extensions perform the padding based on
+-		     character count rather than element count.  */
+-		  case 'c': case 's':
+-# endif
+-# if NEED_PRINTF_FLAG_ZERO
+-		  case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+-		  case 'a': case 'A':
+-# endif
+-		    pad_ourselves = 1;
+-		    break;
+-		  default:
+-		    pad_ourselves = prec_ourselves;
+-		    break;
+-		  }
+-#endif
+-
+-		/* Construct the format string for calling snprintf or
+-		   sprintf.  */
+-		fbp = buf;
+-		*fbp++ = '%';
+-#if NEED_PRINTF_FLAG_GROUPING
+-		/* The underlying implementation doesn't support the ' flag.
+-		   Produce no grouping characters in this case; this is
+-		   acceptable because the grouping is locale dependent.  */
+-#else
+-		if (flags & FLAG_GROUP)
+-		  *fbp++ = '\'';
+-#endif
+-		if (flags & FLAG_LEFT)
+-		  *fbp++ = '-';
+-		if (flags & FLAG_SHOWSIGN)
+-		  *fbp++ = '+';
+-		if (flags & FLAG_SPACE)
+-		  *fbp++ = ' ';
+-		if (flags & FLAG_ALT)
+-		  *fbp++ = '#';
+-		if (!pad_ourselves)
+-		  {
+-		    if (flags & FLAG_ZERO)
+-		      *fbp++ = '0';
+-		    if (dp->width_start != dp->width_end)
+-		      {
+-			size_t n = dp->width_end - dp->width_start;
+-			/* The width specification is known to consist only
+-			   of standard ASCII characters.  */
+-			if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
+-			  {
+-			    memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T));
+-			    fbp += n;
+-			  }
+-			else
+-			  {
+-			    const FCHAR_T *mp = dp->width_start;
+-			    do
+-			      *fbp++ = (unsigned char) *mp++;
+-			    while (--n > 0);
+-			  }
+-		      }
+-		  }
+-		if (!prec_ourselves)
+-		  {
+-		    if (dp->precision_start != dp->precision_end)
+-		      {
+-			size_t n = dp->precision_end - dp->precision_start;
+-			/* The precision specification is known to consist only
+-			   of standard ASCII characters.  */
+-			if (sizeof (FCHAR_T) == sizeof (TCHAR_T))
+-			  {
+-			    memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T));
+-			    fbp += n;
+-			  }
+-			else
+-			  {
+-			    const FCHAR_T *mp = dp->precision_start;
+-			    do
+-			      *fbp++ = (unsigned char) *mp++;
+-			    while (--n > 0);
+-			  }
+-		      }
+-		  }
+-
+-		switch (type)
+-		  {
+-#if HAVE_LONG_LONG_INT
+-		  case TYPE_LONGLONGINT:
+-		  case TYPE_ULONGLONGINT:
+-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+-		    *fbp++ = 'I';
+-		    *fbp++ = '6';
+-		    *fbp++ = '4';
+-		    break;
+-# else
+-		    *fbp++ = 'l';
+-		    /*FALLTHROUGH*/
+-# endif
+-#endif
+-		  case TYPE_LONGINT:
+-		  case TYPE_ULONGINT:
+-#if HAVE_WINT_T
+-		  case TYPE_WIDE_CHAR:
+-#endif
+-#if HAVE_WCHAR_T
+-		  case TYPE_WIDE_STRING:
+-#endif
+-		    *fbp++ = 'l';
+-		    break;
+-		  case TYPE_LONGDOUBLE:
+-		    *fbp++ = 'L';
+-		    break;
+-		  default:
+-		    break;
+-		  }
+-#if NEED_PRINTF_DIRECTIVE_F
+-		if (dp->conversion == 'F')
+-		  *fbp = 'f';
+-		else
+-#endif
+-		  *fbp = dp->conversion;
+-#if USE_SNPRINTF
+-# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3))
+-		fbp[1] = '%';
+-		fbp[2] = 'n';
+-		fbp[3] = '\0';
+-# else
+-		/* On glibc2 systems from glibc >= 2.3 - probably also older
+-		   ones - we know that snprintf's returns value conforms to
+-		   ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes.
+-		   Therefore we can avoid using %n in this situation.
+-		   On glibc2 systems from 2004-10-18 or newer, the use of %n
+-		   in format strings in writable memory may crash the program
+-		   (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
+-		   in this situation.  */
+-		fbp[1] = '\0';
+-# endif
+-#else
+-		fbp[1] = '\0';
+-#endif
+-
+-		/* Construct the arguments for calling snprintf or sprintf.  */
+-		prefix_count = 0;
+-		if (!pad_ourselves && dp->width_arg_index != ARG_NONE)
+-		  {
+-		    if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+-		      abort ();
+-		    prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
+-		  }
+-		if (dp->precision_arg_index != ARG_NONE)
+-		  {
+-		    if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+-		      abort ();
+-		    prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
+-		  }
+-
+-#if USE_SNPRINTF
+-		/* The SNPRINTF result is appended after result[0..length].
+-		   The latter is an array of DCHAR_T; SNPRINTF appends an
+-		   array of TCHAR_T to it.  This is possible because
+-		   sizeof (TCHAR_T) divides sizeof (DCHAR_T) and
+-		   alignof (TCHAR_T) <= alignof (DCHAR_T).  */
+-# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T))
+-		/* Prepare checking whether snprintf returns the count
+-		   via %n.  */
+-		ENSURE_ALLOCATION (xsum (length, 1));
+-		*(TCHAR_T *) (result + length) = '\0';
+-#endif
+-
+-		for (;;)
+-		  {
+-		    int count = -1;
+-
+-#if USE_SNPRINTF
+-		    int retcount = 0;
+-		    size_t maxlen = allocated - length;
+-		    /* SNPRINTF can fail if its second argument is
+-		       > INT_MAX.  */
+-		    if (maxlen > INT_MAX / TCHARS_PER_DCHAR)
+-		      maxlen = INT_MAX / TCHARS_PER_DCHAR;
+-		    maxlen = maxlen * TCHARS_PER_DCHAR;
+-# define SNPRINTF_BUF(arg) \
+-		    switch (prefix_count)				    \
+-		      {							    \
+-		      case 0:						    \
+-			retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+-					     maxlen, buf,		    \
+-					     arg, &count);		    \
+-			break;						    \
+-		      case 1:						    \
+-			retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+-					     maxlen, buf,		    \
+-					     prefixes[0], arg, &count);	    \
+-			break;						    \
+-		      case 2:						    \
+-			retcount = SNPRINTF ((TCHAR_T *) (result + length), \
+-					     maxlen, buf,		    \
+-					     prefixes[0], prefixes[1], arg, \
+-					     &count);			    \
+-			break;						    \
+-		      default:						    \
+-			abort ();					    \
+-		      }
+-#else
+-# define SNPRINTF_BUF(arg) \
+-		    switch (prefix_count)				    \
+-		      {							    \
+-		      case 0:						    \
+-			count = sprintf (tmp, buf, arg);		    \
+-			break;						    \
+-		      case 1:						    \
+-			count = sprintf (tmp, buf, prefixes[0], arg);	    \
+-			break;						    \
+-		      case 2:						    \
+-			count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
+-					 arg);				    \
+-			break;						    \
+-		      default:						    \
+-			abort ();					    \
+-		      }
+-#endif
+-
+-		    switch (type)
+-		      {
+-		      case TYPE_SCHAR:
+-			{
+-			  int arg = a.arg[dp->arg_index].a.a_schar;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_UCHAR:
+-			{
+-			  unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_SHORT:
+-			{
+-			  int arg = a.arg[dp->arg_index].a.a_short;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_USHORT:
+-			{
+-			  unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_INT:
+-			{
+-			  int arg = a.arg[dp->arg_index].a.a_int;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_UINT:
+-			{
+-			  unsigned int arg = a.arg[dp->arg_index].a.a_uint;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_LONGINT:
+-			{
+-			  long int arg = a.arg[dp->arg_index].a.a_longint;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_ULONGINT:
+-			{
+-			  unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-#if HAVE_LONG_LONG_INT
+-		      case TYPE_LONGLONGINT:
+-			{
+-			  long long int arg = a.arg[dp->arg_index].a.a_longlongint;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_ULONGLONGINT:
+-			{
+-			  unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-#endif
+-		      case TYPE_DOUBLE:
+-			{
+-			  double arg = a.arg[dp->arg_index].a.a_double;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_LONGDOUBLE:
+-			{
+-			  long double arg = a.arg[dp->arg_index].a.a_longdouble;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      case TYPE_CHAR:
+-			{
+-			  int arg = a.arg[dp->arg_index].a.a_char;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-#if HAVE_WINT_T
+-		      case TYPE_WIDE_CHAR:
+-			{
+-			  wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-#endif
+-		      case TYPE_STRING:
+-			{
+-			  const char *arg = a.arg[dp->arg_index].a.a_string;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-#if HAVE_WCHAR_T
+-		      case TYPE_WIDE_STRING:
+-			{
+-			  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-#endif
+-		      case TYPE_POINTER:
+-			{
+-			  void *arg = a.arg[dp->arg_index].a.a_pointer;
+-			  SNPRINTF_BUF (arg);
+-			}
+-			break;
+-		      default:
+-			abort ();
+-		      }
+-
+-#if USE_SNPRINTF
+-		    /* Portability: Not all implementations of snprintf()
+-		       are ISO C 99 compliant.  Determine the number of
+-		       bytes that snprintf() has produced or would have
+-		       produced.  */
+-		    if (count >= 0)
+-		      {
+-			/* Verify that snprintf() has NUL-terminated its
+-			   result.  */
+-			if (count < maxlen
+-			    && ((TCHAR_T *) (result + length)) [count] != '\0')
+-			  abort ();
+-			/* Portability hack.  */
+-			if (retcount > count)
+-			  count = retcount;
+-		      }
+-		    else
+-		      {
+-			/* snprintf() doesn't understand the '%n'
+-			   directive.  */
+-			if (fbp[1] != '\0')
+-			  {
+-			    /* Don't use the '%n' directive; instead, look
+-			       at the snprintf() return value.  */
+-			    fbp[1] = '\0';
+-			    continue;
+-			  }
+-			else
+-			  {
+-			    /* Look at the snprintf() return value.  */
+-			    if (retcount < 0)
+-			      {
+-				/* HP-UX 10.20 snprintf() is doubly deficient:
+-				   It doesn't understand the '%n' directive,
+-				   *and* it returns -1 (rather than the length
+-				   that would have been required) when the
+-				   buffer is too small.  */
+-				size_t bigger_need =
+-				  xsum (xtimes (allocated, 2), 12);
+-				ENSURE_ALLOCATION (bigger_need);
+-				continue;
+-			      }
+-			    else
+-			      count = retcount;
+-			  }
+-		      }
+-#endif
+-
+-		    /* Attempt to handle failure.  */
+-		    if (count < 0)
+-		      {
+-			if (!(result == resultbuf || result == NULL))
+-			  free (result);
+-			if (buf_malloced != NULL)
+-			  free (buf_malloced);
+-			CLEANUP ();
+-			errno = EINVAL;
+-			return NULL;
+-		      }
+-
+-#if USE_SNPRINTF
+-		    /* Handle overflow of the allocated buffer.
+-		       If such an overflow occurs, a C99 compliant snprintf()
+-		       returns a count >= maxlen.  However, a non-compliant
+-		       snprintf() function returns only count = maxlen - 1.  To
+-		       cover both cases, test whether count >= maxlen - 1.  */
+-		    if ((unsigned int) count + 1 >= maxlen)
+-		      {
+-			/* If maxlen already has attained its allowed maximum,
+-			   allocating more memory will not increase maxlen.
+-			   Instead of looping, bail out.  */
+-			if (maxlen == INT_MAX / TCHARS_PER_DCHAR)
+-			  goto overflow;
+-			else
+-			  {
+-			    /* Need at least count * sizeof (TCHAR_T) bytes.
+-			       But allocate proportionally, to avoid looping
+-			       eternally if snprintf() reports a too small
+-			       count.  */
+-			    size_t n =
+-			      xmax (xsum (length,
+-					  (count + TCHARS_PER_DCHAR - 1)
+-					  / TCHARS_PER_DCHAR),
+-				    xtimes (allocated, 2));
+-
+-			    ENSURE_ALLOCATION (n);
+-			    continue;
+-			  }
+-		      }
+-#endif
+-
+-#if NEED_PRINTF_UNBOUNDED_PRECISION
+-		    if (prec_ourselves)
+-		      {
+-			/* Handle the precision.  */
+-			TCHAR_T *prec_ptr = 
+-# if USE_SNPRINTF
+-			  (TCHAR_T *) (result + length);
+-# else
+-			  tmp;
+-# endif
+-			size_t prefix_count;
+-			size_t move;
+-
+-			prefix_count = 0;
+-			/* Put the additional zeroes after the sign.  */
+-			if (count >= 1
+-			    && (*prec_ptr == '-' || *prec_ptr == '+'
+-				|| *prec_ptr == ' '))
+-			  prefix_count = 1;
+-			/* Put the additional zeroes after the 0x prefix if
+-			   (flags & FLAG_ALT) || (dp->conversion == 'p').  */
+-			else if (count >= 2
+-				 && prec_ptr[0] == '0'
+-				 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
+-			  prefix_count = 2;
+-
+-			move = count - prefix_count;
+-			if (precision > move)
+-			  {
+-			    /* Insert zeroes.  */
+-			    size_t insert = precision - move;
+-			    TCHAR_T *prec_end;
+-
+-# if USE_SNPRINTF
+-			    size_t n =
+-			      xsum (length,
+-				    (count + insert + TCHARS_PER_DCHAR - 1)
+-				    / TCHARS_PER_DCHAR);
+-			    length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
+-			    ENSURE_ALLOCATION (n);
+-			    length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR;
+-			    prec_ptr = (TCHAR_T *) (result + length);
+-# endif
+-
+-			    prec_end = prec_ptr + count;
+-			    prec_ptr += prefix_count;
+-
+-			    while (prec_end > prec_ptr)
+-			      {
+-				prec_end--;
+-				prec_end[insert] = prec_end[0];
+-			      }
+-
+-			    prec_end += insert;
+-			    do
+-			      *--prec_end = '0';
+-			    while (prec_end > prec_ptr);
+-
+-			    count += insert;
+-			  }
+-		      }
+-#endif
+-
+-#if !DCHAR_IS_TCHAR
+-# if !USE_SNPRINTF
+-		    if (count >= tmp_length)
+-		      /* tmp_length was incorrectly calculated - fix the
+-			 code above!  */
+-		      abort ();
+-# endif
+-
+-		    /* Convert from TCHAR_T[] to DCHAR_T[].  */
+-		    if (dp->conversion == 'c' || dp->conversion == 's')
+-		      {
+-			/* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING
+-			   TYPE_WIDE_STRING.
+-			   The result string is not certainly ASCII.  */
+-			const TCHAR_T *tmpsrc;
+-			DCHAR_T *tmpdst;
+-			size_t tmpdst_len;
+-			/* This code assumes that TCHAR_T is 'char'.  */
+-			typedef int TCHAR_T_verify
+-				    [2 * (sizeof (TCHAR_T) == 1) - 1];
+-# if USE_SNPRINTF
+-			tmpsrc = (TCHAR_T *) (result + length);
+-# else
+-			tmpsrc = tmp;
+-# endif
+-			tmpdst = NULL;
+-			tmpdst_len = 0;
+-			if (DCHAR_CONV_FROM_ENCODING (locale_charset (),
+-						      iconveh_question_mark,
+-						      tmpsrc, count,
+-						      NULL,
+-						      &tmpdst, &tmpdst_len)
+-			    < 0)
+-			  {
+-			    int saved_errno = errno;
+-			    if (!(result == resultbuf || result == NULL))
+-			      free (result);
+-			    if (buf_malloced != NULL)
+-			      free (buf_malloced);
+-			    CLEANUP ();
+-			    errno = saved_errno;
+-			    return NULL;
+-			  }
+-			ENSURE_ALLOCATION (xsum (length, tmpdst_len));
+-			DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+-			free (tmpdst);
+-			count = tmpdst_len;
+-		      }
+-		    else
+-		      {
+-			/* The result string is ASCII.
+-			   Simple 1:1 conversion.  */
+-# if USE_SNPRINTF
+-			/* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a
+-			   no-op conversion, in-place on the array starting
+-			   at (result + length).  */
+-			if (sizeof (DCHAR_T) != sizeof (TCHAR_T))
+-# endif
+-			  {
+-			    const TCHAR_T *tmpsrc;
+-			    DCHAR_T *tmpdst;
+-			    size_t n;
+-
+-# if USE_SNPRINTF
+-			    if (result == resultbuf)
+-			      {
+-				tmpsrc = (TCHAR_T *) (result + length);
+-				/* ENSURE_ALLOCATION will not move tmpsrc
+-				   (because it's part of resultbuf).  */
+-				ENSURE_ALLOCATION (xsum (length, count));
+-			      }
+-			    else
+-			      {
+-				/* ENSURE_ALLOCATION will move the array
+-				   (because it uses realloc().  */
+-				ENSURE_ALLOCATION (xsum (length, count));
+-				tmpsrc = (TCHAR_T *) (result + length);
+-			      }
+-# else
+-			    tmpsrc = tmp;
+-			    ENSURE_ALLOCATION (xsum (length, count));
+-# endif
+-			    tmpdst = result + length;
+-			    /* Copy backwards, because of overlapping.  */
+-			    tmpsrc += count;
+-			    tmpdst += count;
+-			    for (n = count; n > 0; n--)
+-			      *--tmpdst = (unsigned char) *--tmpsrc;
+-			  }
+-		      }
+-#endif
+-
+-#if DCHAR_IS_TCHAR && !USE_SNPRINTF
+-		    /* Make room for the result.  */
+-		    if (count > allocated - length)
+-		      {
+-			/* Need at least count elements.  But allocate
+-			   proportionally.  */
+-			size_t n =
+-			  xmax (xsum (length, count), xtimes (allocated, 2));
+-
+-			ENSURE_ALLOCATION (n);
+-		      }
+-#endif
+-
+-		    /* Here count <= allocated - length.  */
+-
+-		    /* Perform padding.  */
+-#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+-		    if (pad_ourselves && has_width)
+-		      {
+-			size_t w;
+-# if ENABLE_UNISTDIO
+-			/* Outside POSIX, it's preferrable to compare the width
+-			   against the number of _characters_ of the converted
+-			   value.  */
+-			w = DCHAR_MBSNLEN (result + length, count);
+-# else
+-			/* The width is compared against the number of _bytes_
+-			   of the converted value, says POSIX.  */
+-			w = count;
+-# endif
+-			if (w < width)
+-			  {
+-			    size_t pad = width - w;
+-# if USE_SNPRINTF
+-			    /* Make room for the result.  */
+-			    if (xsum (count, pad) > allocated - length)
+-			      {
+-				/* Need at least count + pad elements.  But
+-				   allocate proportionally.  */
+-				size_t n =
+-				  xmax (xsum3 (length, count, pad),
+-					xtimes (allocated, 2));
+-
+-				length += count;
+-				ENSURE_ALLOCATION (n);
+-				length -= count;
+-			      }
+-			    /* Here count + pad <= allocated - length.  */
+-# endif
+-			    {
+-# if !DCHAR_IS_TCHAR || USE_SNPRINTF
+-			      DCHAR_T * const rp = result + length;
+-# else
+-			      DCHAR_T * const rp = tmp;
+-# endif
+-			      DCHAR_T *p = rp + count;
+-			      DCHAR_T *end = p + pad;
+-# if NEED_PRINTF_FLAG_ZERO
+-			      DCHAR_T *pad_ptr;
+-#  if !DCHAR_IS_TCHAR
+-			      if (dp->conversion == 'c'
+-				  || dp->conversion == 's')
+-				/* No zero-padding for string directives.  */
+-				pad_ptr = NULL;
+-			      else
+-#  endif
+-				{
+-				  pad_ptr = (*rp == '-' ? rp + 1 : rp);
+-				  /* No zero-padding of "inf" and "nan".  */
+-				  if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z')
+-				      || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
+-				    pad_ptr = NULL;
+-				}
+-# endif
+-			      /* The generated string now extends from rp to p,
+-				 with the zero padding insertion point being at
+-				 pad_ptr.  */
+-
+-			      count = count + pad; /* = end - rp */
+-
+-			      if (flags & FLAG_LEFT)
+-				{
+-				  /* Pad with spaces on the right.  */
+-				  for (; pad > 0; pad--)
+-				    *p++ = ' ';
+-				}
+-# if NEED_PRINTF_FLAG_ZERO
+-			      else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
+-				{
+-				  /* Pad with zeroes.  */
+-				  DCHAR_T *q = end;
+-
+-				  while (p > pad_ptr)
+-				    *--q = *--p;
+-				  for (; pad > 0; pad--)
+-				    *p++ = '0';
+-				}
+-# endif
+-			      else
+-				{
+-				  /* Pad with spaces on the left.  */
+-				  DCHAR_T *q = end;
+-
+-				  while (p > rp)
+-				    *--q = *--p;
+-				  for (; pad > 0; pad--)
+-				    *p++ = ' ';
+-				}
+-			    }
+-			  }
+-		      }
+-#endif
+-
+-#if DCHAR_IS_TCHAR && !USE_SNPRINTF
+-		    if (count >= tmp_length)
+-		      /* tmp_length was incorrectly calculated - fix the
+-			 code above!  */
+-		      abort ();
+-#endif
+-
+-		    /* Here still count <= allocated - length.  */
+-
+-#if !DCHAR_IS_TCHAR || USE_SNPRINTF
+-		    /* The snprintf() result did fit.  */
+-#else
+-		    /* Append the sprintf() result.  */
+-		    memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+-#endif
+-#if !USE_SNPRINTF
+-		    if (tmp != tmpbuf)
+-		      free (tmp);
+-#endif
+-
+-#if NEED_PRINTF_DIRECTIVE_F
+-		    if (dp->conversion == 'F')
+-		      {
+-			/* Convert the %f result to upper case for %F.  */
+-			DCHAR_T *rp = result + length;
+-			size_t rc;
+-			for (rc = count; rc > 0; rc--, rp++)
+-			  if (*rp >= 'a' && *rp <= 'z')
+-			    *rp = *rp - 'a' + 'A';
+-		      }
+-#endif
+-
+-		    length += count;
+-		    break;
+-		  }
+-	      }
+-	  }
+-      }
+-
+-    /* Add the final NUL.  */
+-    ENSURE_ALLOCATION (xsum (length, 1));
+-    result[length] = '\0';
+-
+-    if (result != resultbuf && length + 1 < allocated)
+-      {
+-	/* Shrink the allocated memory if possible.  */
+-	DCHAR_T *memory;
+-
+-	memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T));
+-	if (memory != NULL)
+-	  result = memory;
+-      }
+-
+-    if (buf_malloced != NULL)
+-      free (buf_malloced);
+-    CLEANUP ();
+-    *lengthp = length;
+-    /* Note that we can produce a big string of a length > INT_MAX.  POSIX
+-       says that snprintf() fails with errno = EOVERFLOW in this case, but
+-       that's only because snprintf() returns an 'int'.  This function does
+-       not have this limitation.  */
+-    return result;
+-
+-  overflow:
+-    if (!(result == resultbuf || result == NULL))
+-      free (result);
+-    if (buf_malloced != NULL)
+-      free (buf_malloced);
+-    CLEANUP ();
+-    errno = EOVERFLOW;
+-    return NULL;
+-
+-  out_of_memory:
+-    if (!(result == resultbuf || result == NULL))
+-      free (result);
+-    if (buf_malloced != NULL)
+-      free (buf_malloced);
+-  out_of_memory_1:
+-    CLEANUP ();
+-    errno = ENOMEM;
+-    return NULL;
+-  }
+-}
+-
+-#undef TCHARS_PER_DCHAR
+-#undef SNPRINTF
+-#undef USE_SNPRINTF
+-#undef DCHAR_CPY
+-#undef PRINTF_PARSE
+-#undef DIRECTIVES
+-#undef DIRECTIVE
+-#undef DCHAR_IS_TCHAR
+-#undef TCHAR_T
+-#undef DCHAR_T
+-#undef FCHAR_T
+-#undef VASNPRINTF
+--- a/intl/vasnprintf.h
++++ /dev/null
+@@ -1,78 +0,0 @@
+-/* vsprintf with automatic memory allocation.
+-   Copyright (C) 2002-2004 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _VASNPRINTF_H
+-#define _VASNPRINTF_H
+-
+-/* Get va_list.  */
+-#include <stdarg.h>
+-
+-/* Get size_t.  */
+-#include <stddef.h>
+-
+-#ifndef __attribute__
+-/* This feature is available in gcc versions 2.5 and later.  */
+-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+-#  define __attribute__(Spec) /* empty */
+-# endif
+-/* The __-protected variants of `format' and `printf' attributes
+-   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
+-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+-#  define __format__ format
+-#  define __printf__ printf
+-# endif
+-#endif
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-/* Write formatted output to a string dynamically allocated with malloc().
+-   You can pass a preallocated buffer for the result in RESULTBUF and its
+-   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
+-   If successful, return the address of the string (this may be = RESULTBUF
+-   if no dynamic memory allocation was necessary) and set *LENGTHP to the
+-   number of resulting bytes, excluding the trailing NUL.  Upon error, set
+-   errno and return NULL.
+-
+-   When dynamic memory allocation occurs, the preallocated buffer is left
+-   alone (with possibly modified contents).  This makes it possible to use
+-   a statically allocated or stack-allocated buffer, like this:
+-
+-          char buf[100];
+-          size_t len = sizeof (buf);
+-          char *output = vasnprintf (buf, &len, format, args);
+-          if (output == NULL)
+-            ... error handling ...;
+-          else
+-            {
+-              ... use the output string ...;
+-              if (output != buf)
+-                free (output);
+-            }
+-  */
+-extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+-       __attribute__ ((__format__ (__printf__, 3, 4)));
+-extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
+-       __attribute__ ((__format__ (__printf__, 3, 0)));
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* _VASNPRINTF_H */
+--- a/intl/vasnwprintf.h
++++ /dev/null
+@@ -1,46 +0,0 @@
+-/* vswprintf with automatic memory allocation.
+-   Copyright (C) 2002-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _VASNWPRINTF_H
+-#define _VASNWPRINTF_H
+-
+-/* Get va_list.  */
+-#include <stdarg.h>
+-
+-/* Get wchar_t, size_t.  */
+-#include <stddef.h>
+-
+-#ifdef	__cplusplus
+-extern "C" {
+-#endif
+-
+-/* Write formatted output to a string dynamically allocated with malloc().
+-   You can pass a preallocated buffer for the result in RESULTBUF and its
+-   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
+-   If successful, return the address of the string (this may be = RESULTBUF
+-   if no dynamic memory allocation was necessary) and set *LENGTHP to the
+-   number of resulting bytes, excluding the trailing NUL.  Upon error, set
+-   errno and return NULL.  */
+-extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...);
+-extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args);
+-
+-#ifdef	__cplusplus
+-}
+-#endif
+-
+-#endif /* _VASNWPRINTF_H */
+--- a/intl/version.c
++++ /dev/null
+@@ -1,26 +0,0 @@
+-/* libintl library version.
+-   Copyright (C) 2005 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifdef HAVE_CONFIG_H
+-# include <config.h>
+-#endif
+-
+-#include "libgnuintl.h"
+-
+-/* Version number: (major<<16) + (minor<<8) + subminor */
+-int libintl_version = LIBINTL_VERSION;
+--- a/intl/wprintf-parse.h
++++ /dev/null
+@@ -1,75 +0,0 @@
+-/* Parse printf format string.
+-   Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _WPRINTF_PARSE_H
+-#define _WPRINTF_PARSE_H
+-
+-#include "printf-args.h"
+-
+-
+-/* Flags */
+-#define FLAG_GROUP	 1	/* ' flag */
+-#define FLAG_LEFT	 2	/* - flag */
+-#define FLAG_SHOWSIGN	 4	/* + flag */
+-#define FLAG_SPACE	 8	/* space flag */
+-#define FLAG_ALT	16	/* # flag */
+-#define FLAG_ZERO	32
+-
+-/* arg_index value indicating that no argument is consumed.  */
+-#define ARG_NONE	(~(size_t)0)
+-
+-/* A parsed directive.  */
+-typedef struct
+-{
+-  const wchar_t* dir_start;
+-  const wchar_t* dir_end;
+-  int flags;
+-  const wchar_t* width_start;
+-  const wchar_t* width_end;
+-  size_t width_arg_index;
+-  const wchar_t* precision_start;
+-  const wchar_t* precision_end;
+-  size_t precision_arg_index;
+-  wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */
+-  size_t arg_index;
+-}
+-wchar_t_directive;
+-
+-/* A parsed format string.  */
+-typedef struct
+-{
+-  size_t count;
+-  wchar_t_directive *dir;
+-  size_t max_width_length;
+-  size_t max_precision_length;
+-}
+-wchar_t_directives;
+-
+-
+-/* Parses the format string.  Fills in the number N of directives, and fills
+-   in directives[0], ..., directives[N-1], and sets directives[N].dir_start
+-   to the end of the format string.  Also fills in the arg_type fields of the
+-   arguments and the needed count of arguments.  */
+-#ifdef STATIC
+-STATIC
+-#else
+-extern
+-#endif
+-int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a);
+-
+-#endif /* _WPRINTF_PARSE_H */
+--- a/intl/xsize.h
++++ /dev/null
+@@ -1,109 +0,0 @@
+-/* xsize.h -- Checked size_t computations.
+-
+-   Copyright (C) 2003 Free Software Foundation, Inc.
+-
+-   This program 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, 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
+-   Library General Public License for more details.
+-
+-   You should have received a copy of the GNU Library 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.  */
+-
+-#ifndef _XSIZE_H
+-#define _XSIZE_H
+-
+-/* Get size_t.  */
+-#include <stddef.h>
+-
+-/* Get SIZE_MAX.  */
+-#include <limits.h>
+-#if HAVE_STDINT_H
+-# include <stdint.h>
+-#endif
+-
+-/* The size of memory objects is often computed through expressions of
+-   type size_t. Example:
+-      void* p = malloc (header_size + n * element_size).
+-   These computations can lead to overflow.  When this happens, malloc()
+-   returns a piece of memory that is way too small, and the program then
+-   crashes while attempting to fill the memory.
+-   To avoid this, the functions and macros in this file check for overflow.
+-   The convention is that SIZE_MAX represents overflow.
+-   malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
+-   implementation that uses mmap --, it's recommended to use size_overflow_p()
+-   or size_in_bounds_p() before invoking malloc().
+-   The example thus becomes:
+-      size_t size = xsum (header_size, xtimes (n, element_size));
+-      void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
+-*/
+-
+-/* Convert an arbitrary value >= 0 to type size_t.  */
+-#define xcast_size_t(N) \
+-  ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
+-
+-/* Sum of two sizes, with overflow check.  */
+-static inline size_t
+-#if __GNUC__ >= 3
+-__attribute__ ((__pure__))
+-#endif
+-xsum (size_t size1, size_t size2)
+-{
+-  size_t sum = size1 + size2;
+-  return (sum >= size1 ? sum : SIZE_MAX);
+-}
+-
+-/* Sum of three sizes, with overflow check.  */
+-static inline size_t
+-#if __GNUC__ >= 3
+-__attribute__ ((__pure__))
+-#endif
+-xsum3 (size_t size1, size_t size2, size_t size3)
+-{
+-  return xsum (xsum (size1, size2), size3);
+-}
+-
+-/* Sum of four sizes, with overflow check.  */
+-static inline size_t
+-#if __GNUC__ >= 3
+-__attribute__ ((__pure__))
+-#endif
+-xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
+-{
+-  return xsum (xsum (xsum (size1, size2), size3), size4);
+-}
+-
+-/* Maximum of two sizes, with overflow check.  */
+-static inline size_t
+-#if __GNUC__ >= 3
+-__attribute__ ((__pure__))
+-#endif
+-xmax (size_t size1, size_t size2)
+-{
+-  /* No explicit check is needed here, because for any n:
+-     max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX.  */
+-  return (size1 >= size2 ? size1 : size2);
+-}
+-
+-/* Multiplication of a count with an element size, with overflow check.
+-   The count must be >= 0 and the element size must be > 0.
+-   This is a macro, not an inline function, so that it works correctly even
+-   when N is of a wider tupe and N > SIZE_MAX.  */
+-#define xtimes(N, ELSIZE) \
+-  ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
+-
+-/* Check for overflow.  */
+-#define size_overflow_p(SIZE) \
+-  ((SIZE) == SIZE_MAX)
+-/* Check against overflow.  */
+-#define size_in_bounds_p(SIZE) \
+-  ((SIZE) != SIZE_MAX)
+-
+-#endif /* _XSIZE_H */
+--- a/m4/intlmacosx.m4
++++ b/m4/intlmacosx.m4
+@@ -1,50 +1,71 @@
+-# intlmacosx.m4 serial 1 (gettext-0.17)
+-dnl Copyright (C) 2004-2007 Free Software Foundation, Inc.
++# intlmacosx.m4 serial 6 (gettext-0.20)
++dnl Copyright (C) 2004-2014, 2016, 2019 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+ dnl
+-dnl This file can can be used in projects which are not available under
++dnl This file can be used in projects which are not available under
+ dnl the GNU General Public License or the GNU Library General Public
+ dnl License but which still want to provide support for the GNU gettext
+ dnl functionality.
+ dnl Please note that the actual code of the GNU gettext library is covered
+ dnl by the GNU Library General Public License, and the rest of the GNU
+-dnl gettext package package is covered by the GNU General Public License.
++dnl gettext package is covered by the GNU General Public License.
+ dnl They are *not* in the public domain.
+ 
+-dnl Checks for special options needed on MacOS X.
++dnl Checks for special options needed on Mac OS X.
+ dnl Defines INTL_MACOSX_LIBS.
+ AC_DEFUN([gt_INTL_MACOSX],
+ [
+-  dnl Check for API introduced in MacOS X 10.2.
++  dnl Check for API introduced in Mac OS X 10.4.
+   AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+-    gt_cv_func_CFPreferencesCopyAppValue,
++    [gt_cv_func_CFPreferencesCopyAppValue],
+     [gt_save_LIBS="$LIBS"
+      LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+-     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+-       [CFPreferencesCopyAppValue(NULL, NULL)],
++     AC_LINK_IFELSE(
++       [AC_LANG_PROGRAM(
++          [[#include <CoreFoundation/CFPreferences.h>]],
++          [[CFPreferencesCopyAppValue(NULL, NULL)]])],
+        [gt_cv_func_CFPreferencesCopyAppValue=yes],
+        [gt_cv_func_CFPreferencesCopyAppValue=no])
+      LIBS="$gt_save_LIBS"])
+   if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+-    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+-      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
++    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
++      [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+   fi
+-  dnl Check for API introduced in MacOS X 10.3.
+-  AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
++  dnl Check for API introduced in Mac OS X 10.5.
++  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+     [gt_save_LIBS="$LIBS"
+      LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+-     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
++     AC_LINK_IFELSE(
++       [AC_LANG_PROGRAM(
++          [[#include <CoreFoundation/CFLocale.h>]],
++          [[CFLocaleCopyCurrent();]])],
+        [gt_cv_func_CFLocaleCopyCurrent=yes],
+        [gt_cv_func_CFLocaleCopyCurrent=no])
+      LIBS="$gt_save_LIBS"])
+   if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+-    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+-      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
++    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
++      [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
++  fi
++  AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
++    [gt_save_LIBS="$LIBS"
++     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
++     AC_LINK_IFELSE(
++       [AC_LANG_PROGRAM(
++          [[#include <CoreFoundation/CFLocale.h>]],
++          [[CFLocaleCopyPreferredLanguages();]])],
++       [gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
++       [gt_cv_func_CFLocaleCopyPreferredLanguages=no])
++     LIBS="$gt_save_LIBS"])
++  if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
++    AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
++      [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
+   fi
+   INTL_MACOSX_LIBS=
+-  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
++  if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
++     || test $gt_cv_func_CFLocaleCopyCurrent = yes \
++     || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+     INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+   fi
+   AC_SUBST([INTL_MACOSX_LIBS])
+--- a/po/ChangeLog
++++ b/po/ChangeLog
+@@ -1,3 +1,11 @@
++2019-12-07  gettextize  <bug-gnu-gettext@gnu.org>
++
++	* en@boldquot.header: Upgrade to gettext-0.20.1.
++	* en@quot.header: Upgrade to gettext-0.20.1.
++	* insert-header.sin: Upgrade to gettext-0.20.1.
++	* remove-potcdate.sin: Upgrade to gettext-0.20.1.
++	* Rules-quot: Upgrade to gettext-0.20.1.
++
+ 2009-08-11  Scott James Remnant  <scott@netsplit.com>
+ 
+ 	* libnih.pot: Distribute the pot file
+--- a/po/Rules-quot
++++ b/po/Rules-quot
+@@ -1,4 +1,9 @@
+ # Special Makefile rules for English message catalogs with quotation marks.
++#
++# Copyright (C) 2001-2017 Free Software Foundation, Inc.
++# This file, Rules-quot, and its auxiliary files (listed under
++# DISTFILES.common.extra1) are free software; the Free Software Foundation
++# gives unlimited permission to use, copy, distribute, and modify them.
+ 
+ DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+ 
+@@ -14,13 +19,23 @@ en@boldquot.po-update: en@boldquot.po-up
+ 
+ .insert-header.po-update-en:
+ 	@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+-	if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
++	if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+ 	tmpdir=`pwd`; \
+ 	echo "$$lang:"; \
+ 	ll=`echo $$lang | sed -e 's/@.*//'`; \
+ 	LC_ALL=C; export LC_ALL; \
+ 	cd $(srcdir); \
+-	if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
++	if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \
++	   | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \
++	   { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	     '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \
++	       $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \
++	       ;; \
++	     *) \
++	       $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \
++	       ;; \
++	     esac } 2>/dev/null > $$tmpdir/$$lang.new.po \
++	     ; then \
+ 	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ 	    rm -f $$tmpdir/$$lang.new.po; \
+ 	  else \
+--- a/po/en@boldquot.header
++++ b/po/en@boldquot.header
+@@ -2,7 +2,7 @@
+ # The msgids must be ASCII and therefore cannot contain real quotation
+ # characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+ # and double quote (0x22). These substitutes look strange; see
+-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+ #
+ # This catalog translates grave accent (0x60) and apostrophe (0x27) to
+ # left single quotation mark (U+2018) and right single quotation mark (U+2019).
+--- a/po/en@quot.header
++++ b/po/en@quot.header
+@@ -2,7 +2,7 @@
+ # The msgids must be ASCII and therefore cannot contain real quotation
+ # characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+ # and double quote (0x22). These substitutes look strange; see
+-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++# https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+ #
+ # This catalog translates grave accent (0x60) and apostrophe (0x27) to
+ # left single quotation mark (U+2018) and right single quotation mark (U+2019).
+--- a/po/insert-header.sin
++++ b/po/insert-header.sin
+@@ -1,5 +1,10 @@
+ # Sed script that inserts the file called HEADER before the header entry.
+ #
++# Copyright (C) 2001 Free Software Foundation, Inc.
++# Written by Bruno Haible <bruno@clisp.org>, 2001.
++# This file is free software; the Free Software Foundation gives
++# unlimited permission to use, copy, distribute, and modify it.
++#
+ # At each occurrence of a line starting with "msgid ", we execute the following
+ # commands. At the first occurrence, insert the file. At the following
+ # occurrences, do nothing. The distinction between the first and the following
+--- a/po/remove-potcdate.sin
++++ b/po/remove-potcdate.sin
+@@ -1,6 +1,12 @@
+-# Sed script that remove the POT-Creation-Date line in the header entry
++# Sed script that removes the POT-Creation-Date line in the header entry
+ # from a POT file.
+ #
++# Copyright (C) 2002 Free Software Foundation, Inc.
++# Copying and distribution of this file, with or without modification,
++# are permitted in any medium without royalty provided the copyright
++# notice and this notice are preserved.  This file is offered as-is,
++# without any warranty.
++#
+ # The distinction between the first and the following occurrences of the
+ # pattern is achieved by looking at the hold space.
+ /^"POT-Creation-Date: .*"$/{
diff --git a/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb b/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb
index fcb6beb..ff7a4ed 100644
--- a/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb
@@ -20,19 +20,19 @@
 LICENSE = "GPL-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
-DEPENDS = "dbus libnih-native"
-DEPENDS_class-native = "dbus-native"
+DEPENDS = "dbus expat"
+DEPENDS_append_class-target = " libnih-native"
 
 SRC_URI = "https://launchpad.net/${BPN}/1.0/${PV}/+download/${BP}.tar.gz \
            file://libnih_1.0.3-4ubuntu16.patch \
            file://0001-signal.c-SIGCLD-and-SIGCHILD-are-same-on-sytem-V-sys.patch \
+           file://0001-Update-autotool-files-also-make-it-work-with-latest-.patch \
            "
 
 SRC_URI[md5sum] = "db7990ce55e01daffe19006524a1ccb0"
 SRC_URI[sha256sum] = "897572df7565c0a90a81532671e23c63f99b4efde2eecbbf11e7857fbc61f405"
 
-inherit autotools
-inherit gettext
+inherit autotools gettext
 
 do_configure_append () {
         sed -i -e 's,lib/pkgconfig,${baselib}/pkgconfig,g' ${S}/nih/Makefile.in ${S}/nih-dbus/Makefile.in
diff --git a/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.2.1.bb b/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.2.1.bb
new file mode 100644
index 0000000..c2f28fe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.2.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Remote delta-compression library."
+AUTHOR = "Martin Pool, Andrew Tridgell, Donovan Baarda, Adam Schubert"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+SRC_URI = "git://github.com/librsync/librsync.git"
+SRCREV = "5917692418657dc78c9cbde3a8db4c85f25b9c8d"
+S = "${WORKDIR}/git"
+
+DEPENDS = "popt"
+
+inherit cmake
+
+PACKAGES =+ "rdiff"
+FILES_rdiff = "${bindir}/rdiff"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb b/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
index 3685c4a..98cc63e 100644
--- a/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A Library to Access SMI MIB Information"
 HOMEPAGE = "https://www.ibr.cs.tu-bs.de/projects/libsmi"
 
-LICENSE = "BSD-3-Clause & TCL"
+LICENSE = "BSD-3-Clause & tcl"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3ad3076f9332343a21636cfd351f05b7"
 
 SRC_URI = "https://www.ibr.cs.tu-bs.de/projects/${BPN}/download/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb b/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
index 01708df..8b773ae 100644
--- a/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
@@ -7,7 +7,7 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=e0bfebea12a718922225ba987b2126a5"
 
-inherit autotools pkgconfig python-dir
+inherit autotools pkgconfig python3-dir
 
 SRCREV = "fd1ad6e7823fa76d8db0d3c5884faffa8ffddafb"
 SRC_URI = "git://github.com/jackmitch/libsoc.git"
@@ -21,7 +21,7 @@
 PACKAGECONFIG[disabledebug] = "--disable-debug,,"
 PACKAGECONFIG[allboardconfigs] = "--with-board-configs,,"
 PACKAGECONFIG[enableboardconfig] = "--enable-board=${BOARD},,"
-PACKAGECONFIG[python] = "--enable-python=${PYTHON_PN},,${PYTHON_PN}"
+PACKAGECONFIG[python] = "--enable-python=${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN},,${PYTHON_PN} ${PYTHON_PN}-native"
 
 PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'python', \
     '${PYTHON_PN}-libsoc-staticdev ${PYTHON_PN}-libsoc', '', d)}"
diff --git a/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb b/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb
index 185ea11..c1f337a 100644
--- a/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb
@@ -25,4 +25,4 @@
 PACKAGECONFIG[openssl] = "--with-crypto=openssl --with-libssl-prefix=${STAGING_LIBDIR}, , openssl"
 PACKAGECONFIG[gcrypt] = "--with-crypto=libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR}, , libgcrypt"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch
index 6ec91d2..f9fe48b 100644
--- a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch
@@ -18,7 +18,7 @@
  soname	= ${libname}.so.${MVER}
  
  # overwritten by caller (e.g.: debian/rules)
-@@ -72,6 +72,7 @@ install_doc:	docs/lockdev.3
+@@ -73,6 +73,7 @@ install_doc:	docs/lockdev.3
  install_run:	${shared}
  	install -m755 -d	${libdir}
  	install -m644 ${shared}	${libdir}
diff --git a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch
index aa8f6a4..aa8b0f6 100644
--- a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch
@@ -1,14 +1,16 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -15,17 +15,17 @@ shared	= ${libname}.${VER}.so
+@@ -15,17 +15,18 @@ shared	= ${libname}.${VER}.so
  soname	= ${libname}.so.${MVER}
  
  # overwritten by caller (e.g.: debian/rules)
 -basedir	= /usr/local
 +basedir	?= /usr/local
++baselib ?= lib
  srcdir=.
  
- libdir	= ${basedir}/lib
+-libdir	= ${basedir}/lib
++libdir	= ${basedir}/${baselib}
  incdir	= ${basedir}/include
  mandir	= ${basedir}/share/man
  
@@ -17,7 +19,7 @@
 -CFLAGS	= -g
 -LDLIBS	= -llockdev
 +CC	?= gcc
-+LCFLAGS	?= -g -O2 -fPIC -Wall -pipe -D_REENTRANT 
++LCFLAGS	?= -g -O2 -fPIC -Wall -pipe -D_REENTRANT
 +CFLAGS	?= -g
 +LDLIBS	?= -llockdev
  
diff --git a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
index 5b862bd..9d8800e 100644
--- a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
@@ -15,15 +15,15 @@
 SRC_URI[debianpatch.sha256sum] = "a5405c6ee5e97e45eeb1c81330a7e9f444a58bda5e6771fa30007516c115007e"
 
 inherit lib_package perlnative
-export basedir="${D}${prefix}"
 
 CFLAGS += " -D__GNU_LIBRARY__"
 
 TARGET_CC_ARCH += "${LDFLAGS}"
 
+EXTRA_OEMAKE = "basedir=${D}${prefix} baselib=${baselib} LD='${CC}' LD='${CC}'"
 do_compile() {
-        oe_runmake basedir=${D}${prefix} LD="${CC}" LD="${CC}" shared static
+        oe_runmake shared static
 }
 do_install() {
-        oe_runmake DESTDIR=${D} basedir=${D}${prefix} install
+        oe_runmake DESTDIR=${D} install
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch b/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch
deleted file mode 100644
index 5fa700f..0000000
--- a/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: onig-5.9.3/configure.in
-===================================================================
---- onig-5.9.3.orig/configure.in	2012-10-26 07:06:14.000000000 +0000
-+++ onig-5.9.3/configure.in	2014-07-18 08:02:52.701574484 +0000
-@@ -3,7 +3,7 @@
- 
- AC_CONFIG_MACRO_DIR([m4])
- 
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([foreign])
- AC_CONFIG_HEADER(config.h)
- 
- 
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch b/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch
deleted file mode 100644
index b93602a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Author: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
-
-When build on host with older eglibc (Ubuntu 12.04) build fails with:
-
-/tmp/OE/build/tmp-eglibc/sysroots/genericarmv8/usr/include/bits/predefs.h:23:3: error: #error "Never use <bits/predefs.h> directly; include <stdc-predef.h> instead."
-
-Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
-
-Upstream-Status: Inappropriate [embedded specific]
-
----
- Makefile.am        |    2 +-
- sample/Makefile.am |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
---- onig-5.9.3.orig/Makefile.am
-+++ onig-5.9.3/Makefile.am
-@@ -4,11 +4,11 @@ sampledir = $(top_srcdir)/sample
- libname = libonig.la
-
- ACLOCAL_AMFLAGS = -I m4
- #AM_CFLAGS = -DNOT_RUBY
- AM_CFLAGS =
--INCLUDES  = -I$(top_srcdir) -I$(includedir)
-+INCLUDES  = -I$(top_srcdir)
-
- SUBDIRS = . sample
-
- include_HEADERS = oniguruma.h oniggnu.h onigposix.h
- lib_LTLIBRARIES = $(libname)
---- onig-5.9.3.orig/sample/Makefile.am
-+++ onig-5.9.3/sample/Makefile.am
-@@ -1,10 +1,10 @@
- noinst_PROGRAMS = encode listcap names posix simple sql syntax crnl
-
- libname = $(top_builddir)/libonig.la
- LDADD   = $(libname)
--INCLUDES  = -I$(top_srcdir) -I$(includedir)
-+INCLUDES  = -I$(top_srcdir)
-
- encode_SOURCES  = encode.c
- listcap_SOURCES = listcap.c
- names_SOURCES   = names.c
- posix_SOURCES   = posix.c
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch b/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch
new file mode 100644
index 0000000..8915926
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch
@@ -0,0 +1,42 @@
+From 78103ecd18efcd0966531d8718f6e94dcb7a5abf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 6 Jan 2020 16:56:31 +0000
+Subject: [PATCH] build: don't link against (host) system libraries
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: André Draszik <git@andred.net>
+---
+ sample/Makefile.am | 1 -
+ test/Makefile.am   | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/sample/Makefile.am b/sample/Makefile.am
+index 22a4989..e935bf0 100644
+--- a/sample/Makefile.am
++++ b/sample/Makefile.am
+@@ -3,7 +3,6 @@
+ lib_onig = ../src/libonig.la
+ LDADD  = $(lib_onig)
+ 
+-AM_LDFLAGS  = -L$(prefix)/lib
+ AM_CPPFLAGS = -I$(top_srcdir)/src
+ 
+ if ENABLE_POSIX_API
+diff --git a/test/Makefile.am b/test/Makefile.am
+index 4d62568..b7a2105 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -1,7 +1,6 @@
+ ## Makefile.am for Oniguruma
+ lib_onig = ../src/libonig.la
+ 
+-AM_LDFLAGS  = -L$(prefix)/lib
+ AM_CFLAGS = -Wall -Wno-invalid-source-encoding
+ AM_CPPFLAGS = -I$(top_srcdir)/src
+ 
+-- 
+2.23.0.rc1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch b/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch
new file mode 100644
index 0000000..587e5ac
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch
@@ -0,0 +1,36 @@
+From 8bf8189ec4a0d7ee569f66feb0e590e9602c31b6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 6 Jan 2020 15:10:30 +0000
+Subject: [PATCH] build: enable serial-tests automake option (for ptest)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+For ptest, we need to be able to compile the tests without
+running them.
+
+Enabling the serial-tests automake option will add
+buildtest-TESTS and runtest-TESTS makefile targets, the
+former being what we want.
+
+Signed-off-by: André Draszik <git@andred.net>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index ac51e85..48e63ce 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,7 +3,7 @@ AC_INIT(onig, 6.9.4)
+ 
+ AC_CONFIG_MACRO_DIR([m4])
+ 
+-AM_INIT_AUTOMAKE([-Wno-portability])
++AM_INIT_AUTOMAKE([-Wno-portability serial-tests])
+ AC_CONFIG_HEADERS([src/config.h])
+ 
+ 
+-- 
+2.23.0.rc1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest b/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
new file mode 100755
index 0000000..2574d7e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
@@ -0,0 +1,47 @@
+#!/bin/sh -eu
+
+my_cleanup() {
+    [ -n "${workdir:-}" ] && rm -rf "${workdir}"
+}
+
+trap "my_cleanup" EXIT
+for sig in INT TERM ; do
+    # We want sig to expand right here and now, as it's
+    # a loop variable, not when signalled. For $$ it
+    # doesn't matter.
+    # shellcheck disable=SC2064
+    trap "my_cleanup ; trap - EXIT ; trap - ${sig} ; kill -s ${sig} $$" ${sig}
+done
+
+workdir=$(mktemp -d -t onig.ptest.XXXXXX)
+status="${workdir}/failed"
+touch "${status}"
+
+find tests/ -perm -111 -type f -exec sh -c '
+    workdir="${1}"
+    status="${2}"
+    t="${3}"
+    t_log="${workdir}/$(basename ${t}).log"
+
+    res=0
+    ./${t} > "${t_log}" 2>&1 \
+        || res=$?
+    if [ $res -eq 0 ] ; then
+        echo "PASS: ${t}"
+    else
+        echo "FAIL: ${t}"
+        echo "$(basename ${t}): ${t_log}" >> "${status}"
+    fi
+    ' _ "${workdir}" "${status}" {} \;
+
+if [ $(stat -c '%s' "${status}") -ne 0 ] ; then
+    exec >&2
+    while IFS=': ' read -r t t_log ; do
+        printf "\n=========================\n"
+        printf "ERROR: %s:\n" "${t}"
+        printf --  "-------------------------\n"
+        cat "${t_log}"
+    done < "${status}"
+fi
+
+[ $(stat -c '%s' "${status}") -eq 0 ]
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb b/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb
deleted file mode 100644
index 20a71c6..0000000
--- a/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Regular expressions library. The characteristics of this \
-library is that different character encoding for every regular expression \
-object can be specified."
-HOMEPAGE = "https://web.archive.org/web/20150807014439/http://www.geocities.jp/kosako3/oniguruma/"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0d4861b5bc0c392a5aa90d9d76ebd86f"
-
-SRC_URI = "https://web.archive.org/web/20150807014439/http://www.geocities.jp/kosako3/oniguruma/archive/${BP}.tar.gz \
-           file://do-not-use-system-headers.patch \
-           file://configure.patch"
-
-SRC_URI[md5sum] = "d08f10ea5c94919780e6b7bed1ef9830"
-SRC_URI[sha256sum] = "d5642010336a6f68b7f2e34b1f1cb14be333e4d95c2ac02b38c162caf44e47a7"
-
-BINCONFIG = "${bindir}/onig-config"
-
-inherit autotools binconfig-disabled
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb b/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb
new file mode 100644
index 0000000..cfa86f0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Regular expressions library"
+DESCRIPTION = "Oniguruma is a modern and flexible regular expressions library. \
+It encompasses features from different regular expression \
+implementations that traditionally exist in different languages. \
+Character encoding can be specified per regular expression object."
+HOMEPAGE = "https://github.com/kkos/oniguruma"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ee043784bdce7503e619b2d1a85798b"
+
+SRC_URI = "\
+    https://github.com/kkos/oniguruma/releases/download/v${PV}/${BP}.tar.gz \
+    file://0001-build-don-t-link-against-host-system-libraries.patch \
+    file://0001-build-enable-serial-tests-automake-option-for-ptest.patch \
+    file://run-ptest \
+"
+
+SRC_URI[md5sum] = "a12d2fe997b789bd87cf63799c091879"
+SRC_URI[sha256sum] = "4669d22ff7e0992a7e93e116161cac9c0949cd8960d1c562982026726f0e6d53"
+
+BINCONFIG = "${bindir}/onig-config"
+
+inherit autotools binconfig-disabled ptest
+
+BBCLASSEXTEND = "native"
+
+do_compile_ptest() {
+    oe_runmake -C test buildtest-TESTS
+}
+
+do_install_ptest() {
+    install -Dm0755 -t ${D}${PTEST_PATH}/tests/ ${B}/test/.libs/*
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch
new file mode 100644
index 0000000..95664e8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch
@@ -0,0 +1,33 @@
+From ac3f93ea087d3a5461fe57fe021d0fe9a959e13c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 15:25:02 -0800
+Subject: [PATCH] utilBacktrace: Ignore -Warray-bounds
+
+This is new warning with gcc10, until its fixed ignore it like gcc<10
+did
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/user/utilBacktrace.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/open-vm-tools/lib/user/utilBacktrace.c b/open-vm-tools/lib/user/utilBacktrace.c
+index b72340ad..97ca53f2 100644
+--- a/open-vm-tools/lib/user/utilBacktrace.c
++++ b/open-vm-tools/lib/user/utilBacktrace.c
+@@ -517,6 +517,11 @@ Util_BacktraceWithFunc(int bugNr,                // IN:
+    } else {
+       outFunc(outFuncData, "Backtrace for bugNr=%d\n",bugNr);
+    }
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Warray-bounds"
++
+    Util_BacktraceFromPointerWithFunc(&x[-2], outFunc, outFuncData);
++#pragma GCC diagnostic pop
+ #endif
+ }
++
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb
index 9e4aa48..eda77c2 100644
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb
@@ -41,6 +41,7 @@
     file://0001-GitHub-Issue-367.-Remove-references-to-deprecated-G_.patch;patchdir=.. \
     file://0001-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch;patchdir=.. \
     file://0002-hgfsServerLinux-Consider-64bit-time_t-possibility.patch;patchdir=.. \
+    file://0001-utilBacktrace-Ignore-Warray-bounds.patch;patchdir=.. \
 "
 
 SRCREV = "d3edfd142a81096f9f58aff17d84219b457f4987"
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch b/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch
new file mode 100644
index 0000000..f038b0a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch
@@ -0,0 +1,39 @@
+From 67ccf77d97b76e8260c9d793ab172577e2393dbc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 21:33:46 -0800
+Subject: [PATCH] use GNUInstallDirs for detecting install paths
+
+This helps with multilib builds
+
+Upstream-Status: Submitted [https://github.com/opencv/ade/pull/19]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sources/ade/CMakeLists.txt | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/sources/ade/CMakeLists.txt b/sources/ade/CMakeLists.txt
+index 2d1dd20..46415d1 100644
+--- a/sources/ade/CMakeLists.txt
++++ b/sources/ade/CMakeLists.txt
+@@ -47,12 +47,14 @@ if(BUILD_ADE_DOCUMENTATION)
+                       VERBATIM)
+ endif()
+ 
++include(GNUInstallDirs)
++
+ install(TARGETS ade COMPONENT dev
+         EXPORT adeTargets
+-        ARCHIVE DESTINATION lib
+-        LIBRARY DESTINATION lib
+-        RUNTIME DESTINATION lib
+-        INCLUDES DESTINATION include)
++	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++        RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
++	INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ 
+ install(EXPORT adeTargets DESTINATION share/ade COMPONENT dev)
+ 
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb b/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb
index 332820d..3861802 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb
@@ -5,6 +5,7 @@
 HOMEPAGE = "https://github.com/opencv/ade"
 
 SRC_URI = "git://github.com/opencv/ade.git \
+           file://0001-use-GNUInstallDirs-for-detecting-install-paths.patch \
            "
 
 SRCREV = "58b2595a1a95cc807be8bf6222f266a9a1f393a9"
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch
new file mode 100644
index 0000000..fa8db88
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch
@@ -0,0 +1,32 @@
+This CMake module will download files during do_configure.  This is bad as it
+means we can't do offline builds.
+
+Add an option to disallow downloads by emitting a fatal error.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/cmake/OpenCVDownload.cmake b/cmake/OpenCVDownload.cmake
+index cdc47ad2cb..74573f45a2 100644
+--- a/cmake/OpenCVDownload.cmake
++++ b/cmake/OpenCVDownload.cmake
+@@ -14,6 +14,7 @@
+ #    RELATIVE_URL - if set, then URL is treated as a base, and FILENAME will be appended to it
+ #  Note: uses OPENCV_DOWNLOAD_PATH folder as cache, default is <opencv>/.cache
+ 
++set(OPENCV_ALLOW_DOWNLOADS ON CACHE BOOL "Allow downloads")
+ set(HELP_OPENCV_DOWNLOAD_PATH "Cache directory for downloaded files")
+ if(DEFINED ENV{OPENCV_DOWNLOAD_PATH})
+   set(OPENCV_DOWNLOAD_PATH "$ENV{OPENCV_DOWNLOAD_PATH}" CACHE PATH "${HELP_OPENCV_DOWNLOAD_PATH}")
+@@ -153,6 +154,11 @@ function(ocv_download)
+ 
+   # Download
+   if(NOT EXISTS "${CACHE_CANDIDATE}")
++    if(NOT OPENCV_ALLOW_DOWNLOADS)
++      message(FATAL_ERROR "Not going to download ${DL_FILENAME}")
++      return()
++    endif()
++
+     ocv_download_log("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")
+     file(DOWNLOAD "${DL_URL}" "${CACHE_CANDIDATE}"
+          INACTIVITY_TIMEOUT 60
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb
index 5e89db0..f679ccb 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb
@@ -15,6 +15,7 @@
 SRCREV_ipp = "32e315a5b106a7b89dbed51c28f8120a48b368b4"
 SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26"
 SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d"
+SRCREV_face = "8afa57abc8229d611c4937165d20e2a2d9fc5a12"
 
 def ipp_filename(d):
     import re
@@ -41,20 +42,41 @@
            git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20180723;destsuffix=ipp;name=ipp \
            git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_boostdesc_20161012;destsuffix=boostdesc;name=boostdesc \
            git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_vgg_20160317;destsuffix=vgg;name=vgg \
+           git://github.com/opencv/opencv_3rdparty.git;branch=contrib_face_alignment_20170818;destsuffix=face;name=face \
            file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \
            file://0002-Make-opencv-ts-create-share-library-intead-of-static.patch \
            file://0003-To-fix-errors-as-following.patch \
            file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \
            file://0001-Dont-use-isystem.patch \
+           file://download.patch \
            "
 PV = "4.1.0"
 
 S = "${WORKDIR}/git"
 
+# OpenCV wants to download more files during configure.  We download these in
+# do_fetch and construct a source cache in the format it expects
+OPENCV_DLDIR = "${WORKDIR}/downloads"
+
 do_unpack_extra() {
     tar xzf ${WORKDIR}/ipp/ippicv/${IPP_FILENAME} -C ${WORKDIR}
-    cp ${WORKDIR}/vgg/*.i ${WORKDIR}/contrib/modules/xfeatures2d/src
-    cp ${WORKDIR}/boostdesc/*.i ${WORKDIR}/contrib/modules/xfeatures2d/src
+
+    md5() {
+        # Return the MD5 of $1
+        echo $(md5sum $1 | cut -d' ' -f1)
+    }
+    cache() {
+        TAG=$1
+        shift
+        mkdir --parents ${OPENCV_DLDIR}/$TAG
+        for F in $*; do
+            DEST=${OPENCV_DLDIR}/$TAG/$(md5 $F)-$(basename $F)
+            test -e $DEST || ln -s $F $DEST
+        done
+    }
+    cache xfeatures2d/boostdesc ${WORKDIR}/boostdesc/*.i
+    cache xfeatures2d/vgg ${WORKDIR}/vgg/*.i
+    cache data ${WORKDIR}/face/*.dat
 }
 addtask unpack_extra after do_unpack before do_patch
 
@@ -65,16 +87,19 @@
     -DOPENCV_ICV_HASH=${IPP_MD5} \
     -DIPPROOT=${WORKDIR}/ippicv_lnx \
     -DOPENCV_GENERATE_PKGCONFIG=ON \
+    -DOPENCV_DOWNLOAD_PATH=${OPENCV_DLDIR} \
+    -DOPENCV_ALLOW_DOWNLOADS=OFF \
     ${@bb.utils.contains("TARGET_CC_ARCH", "-msse3", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1", "", d)} \
     ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.1", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1", "", d)} \
     ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.2", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1 -DENABLE_SSE42=1", "", d)} \
 "
 EXTRA_OECMAKE_append_x86 = " -DX86=ON"
 
-PACKAGECONFIG ??= "python3 eigen jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \
+PACKAGECONFIG ??= "gapi python3 eigen jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \
     ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk", "", d)} \
     ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libav", "", d)}"
 
+PACKAGECONFIG[gapi] = "-DWITH_ADE=ON -Dade_DIR=${STAGING_LIBDIR},-DWITH_ADE=OFF,ade"
 PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas,"
 PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft,"
 PACKAGECONFIG[dnn] = "-DBUILD_opencv_dnn=ON -DPROTOBUF_UPDATE_FILES=ON -DBUILD_PROTOBUF=OFF,-DBUILD_opencv_dnn=OFF,protobuf protobuf-native,"
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fix-misleading-code-indentation.patch b/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fix-misleading-code-indentation.patch
new file mode 100644
index 0000000..eb71b9d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fix-misleading-code-indentation.patch
@@ -0,0 +1,69 @@
+From 283578519ec83a8792b026c10322789784d629de Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 27 Dec 2019 11:33:57 -0800
+Subject: [PATCH] Fix misleading code indentation
+
+Fixes
+error: misleading indentation; statement is not part of the previous 'if' [-Werror,-Wmisleading-indentation]
+         if(cipher)
+         ^
+../../../git/src/libopensc/card-entersafe.c:369:2: note: previous statement is here
+        if(sbuf)
+        ^
+Upstream-Status: Submitted [https://github.com/OpenSC/OpenSC/pull/1894]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libopensc/card-entersafe.c | 12 ++++++------
+ src/tools/pkcs15-init.c        |  4 ++--
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/libopensc/card-entersafe.c b/src/libopensc/card-entersafe.c
+index 3e42c11f..abb9fd81 100644
+--- a/src/libopensc/card-entersafe.c
++++ b/src/libopensc/card-entersafe.c
+@@ -352,10 +352,10 @@ static int entersafe_transmit_apdu(sc_card_t *card, sc_apdu_t *apdu,
+ 	 size_t cipher_data_size,mac_data_size;
+ 	 int blocks;
+ 	 int r=SC_SUCCESS;
+-	u8 *sbuf=NULL;
+-	size_t ssize=0;
++	 u8 *sbuf=NULL;
++	 size_t ssize=0;
+ 
+-	SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
++	 SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE);
+ 
+ 	 assert(card);
+ 	 assert(apdu);
+@@ -363,10 +363,10 @@ static int entersafe_transmit_apdu(sc_card_t *card, sc_apdu_t *apdu,
+ 	 if((cipher||mac) && (!key||(keylen!=8 && keylen!=16)))
+ 		  SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS);
+ 
+-	r = sc_apdu_get_octets(card->ctx, apdu, &sbuf, &ssize, SC_PROTO_RAW);
+-	if (r == SC_SUCCESS)
++	 r = sc_apdu_get_octets(card->ctx, apdu, &sbuf, &ssize, SC_PROTO_RAW);
++	 if (r == SC_SUCCESS)
+ 		sc_apdu_log(card->ctx, SC_LOG_DEBUG_VERBOSE, sbuf, ssize, 1);
+-	if(sbuf)
++	 if(sbuf)
+ 		free(sbuf);
+ 
+ 	 if(cipher)
+diff --git a/src/tools/pkcs15-init.c b/src/tools/pkcs15-init.c
+index 1ce79f45..9a73121c 100644
+--- a/src/tools/pkcs15-init.c
++++ b/src/tools/pkcs15-init.c
+@@ -2311,8 +2311,8 @@ do_read_private_key(const char *filename, const char *format,
+ 			r = util_getpass(&passphrase, &len, stdin);
+ 			if (r < 0 || !passphrase)
+ 				return SC_ERROR_INTERNAL;
+- 			r = do_read_pkcs12_private_key(filename,
+- 					passphrase, pk, certs, max_certs);
++			r = do_read_pkcs12_private_key(filename,
++					passphrase, pk, certs, max_certs);
+ 		}
+ 	} else {
+ 		util_error("Error when reading private key. "
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.19.0.bb b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.19.0.bb
index a1e29dd..0d744e2 100644
--- a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.19.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.19.0.bb
@@ -15,6 +15,7 @@
 SRCREV = "f1691fc91fc113191c3a8aaf5facd6983334ec47"
 SRC_URI = "git://github.com/OpenSC/OpenSC \
            file://0001-Remove-redundant-logging.patch \
+           file://0001-Fix-misleading-code-indentation.patch \
           "
 DEPENDS = "virtual/libiconv openssl"
 
@@ -31,7 +32,7 @@
 PACKAGECONFIG ??= "pcsc"
 
 PACKAGECONFIG[openct] = "--enable-openct,--disable-openct,openct"
-PACKAGECONFIG[pcsc] = "--enable-pcsc,--disable-pcsc,pcsc-lite"
+PACKAGECONFIG[pcsc] = "--enable-pcsc,--disable-pcsc,pcsc-lite,pcsc-lite pcsc-lite-lib"
 
 RDEPENDS_${PN} = "readline"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb b/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb
index c854481..f1dabcd0 100644
--- a/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb
@@ -52,6 +52,7 @@
 
 EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPOCO_UNBUNDLED=ON \
                   -DZLIB_LIBRARY_RELEASE:STRING=z -DPCRE_LIBRARY:STRING=pcre \
+                  -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
                  ${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_TESTS=ON ', '', d)}"
 
 # For the native build we want to use the bundled version
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
index b2af097..eda3f7e 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
@@ -1,6 +1,7 @@
 SUMMARY = "Encoding files for Poppler"
 DESCRIPTION = "Encoding files for use with poppler that enable poppler to \
                correctly render CJK and Cyrrilic."
+HOMEPAGE = "https://poppler.freedesktop.org/"
 LICENSE = "BSD & GPLv2 & GPLv3+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4870b98343f0bbb25fa43b9d2ba59448 \
                     file://COPYING.adobe;md5=63c6a8a9df204c00461fa5f163d8a663 \
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
index c18a5f5..3d6d7a8 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
@@ -16,8 +16,8 @@
 --- a/goo/gbasename.cc
 +++ b/goo/gbasename.cc
 @@ -46,6 +46,10 @@
- #include <stdlib.h>
- #include <string.h>
+ #include <cstdlib>
+ #include <cstring>
  
 +#if !defined(__GLIBC__)
 +#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.82.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.84.0.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.82.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.84.0.bb
index 37f8593..5153868 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.82.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.84.0.bb
@@ -1,4 +1,5 @@
 SUMMARY = "Poppler is a PDF rendering library based on the xpdf-3.0 code base"
+HOMEPAGE = "https://poppler.freedesktop.org/"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
@@ -6,8 +7,8 @@
            file://0001-Do-not-overwrite-all-our-build-flags.patch \
            file://basename-include.patch \
            "
-SRC_URI[md5sum] = "4d6106c2382c5e66072e0b355acc3640"
-SRC_URI[sha256sum] = "234f8e573ea57fb6a008e7c1e56bfae1af5d1adf0e65f47555e1ae103874e4df"
+SRC_URI[md5sum] = "e14a8aca8809908ad4364c32c17bcb92"
+SRC_URI[sha256sum] = "c7a130da743b38a548f7a21fe5940506fb1949f4ebdd3209f0e5b302fa139731"
 
 DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb b/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
index 9e609c4..3a5172e 100644
--- a/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
+++ b/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
@@ -13,7 +13,6 @@
 S = "${WORKDIR}/sjf2410-linux"
 
 inherit native deploy
-do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
 
 CFLAGS += "-DLINUX_PPDEV"
 
@@ -31,3 +30,11 @@
 }
 
 addtask deploy before do_build after do_install
+
+do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
+# cleandirs should possibly be in deploy.bbclass but we need it
+do_deploy[cleandirs] = "${DEPLOYDIR}"
+# clear stamp-extra-info since MACHINE_ARCH is normally put there by
+# deploy.bbclass
+do_deploy[stamp-extra-info] = ""
+
diff --git a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch
new file mode 100644
index 0000000..7924fa5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch
@@ -0,0 +1,22 @@
+From 7a2fe915dded27630a345762628cdd542ea5d58a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 13:56:16 +0100
+Subject: [PATCH] Fix build with recent gettext
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 03d1131..65609e7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,5 +17,5 @@
+ ## Process this file with automake to produce Makefile.in.
+ 
+ EXTRA_DIST      = config.rpath m4 $(DIST_ALPHA)
+-SUBDIRS         = intl lib libopts src doc po tests
++SUBDIRS         = lib libopts src doc po tests
+ ACLOCAL_AMFLAGS = -I m4
diff --git a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
index 8f39fde..930922e 100644
--- a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
@@ -9,7 +9,8 @@
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
            file://0001-Fix-build-with-clang.patch \
            file://CVE-2018-1000097.patch \
-"
+           file://0001-Fix-build-with-recent-gettext.patch \
+           "
 SRC_URI[md5sum] = "32a51b23e25ad5e6af4b89f228be1800"
 SRC_URI[sha256sum] = "ee336e68549664e7a19b117adf02edfdeac6307f22e5ba78baca457116914637"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
index af1cd60..6257568 100644
--- a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
@@ -4,9 +4,9 @@
 LICENSE="GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381"
 
-BPV = "0.8.3"
+BPV = "0.8.4"
 PV = "${BPV}"
-SRCREV = "a3f1f68a048d0d2321ee562b3744dd1162cad22f"
+SRCREV = "4a36a84f7df291ddaebd397aecf0c8515256a8e0"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch
deleted file mode 100644
index 98e6c75..0000000
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-musl does not define __GNUC_PREREQ therefore check for C library being glibc
-if not then define the macro
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: udisks-2.1.7/udisks/udisksclient.c
-===================================================================
---- udisks-2.1.7.orig/udisks/udisksclient.c
-+++ udisks-2.1.7/udisks/udisksclient.c
-@@ -27,8 +27,15 @@
- #include "udisksobjectinfo.h"
- 
- /* For __GNUC_PREREQ usage below */
--#ifdef __GNUC__
-+#ifdef __GLIBC__
- # include <features.h>
-+#else
-+#if defined(__GNUC__)
-+#define	__GNUC_PREREQ(__maj, __min)	\
-+	(__GNUC__ > (__maj) || __GNUC__ == (__maj) && __GNUC_MINOR__ >= (__min))
-+#else
-+#define	__GNUC_PREREQ(__maj, __min) 0
-+#endif
- #endif
- 
- /**
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb
index f0aad95..ecaf01e 100644
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb
@@ -18,10 +18,9 @@
 
 SRC_URI = " \
     git://github.com/storaged-project/udisks.git;branch=master \
-    file://non-gnu-libc.patch \
 "
-PV = "2.8.2"
-SRCREV = "7a787aa3b340fc7f1ca72d748635d6c5445edc58"
+PV = "2.8.4+git${SRCREV}"
+SRCREV = "db5f487345da2eaa87976450ea51c2c465d9b82e"
 S = "${WORKDIR}/git"
 
 CVE_PRODUCT = "udisks"
@@ -50,6 +49,7 @@
 
 PACKAGES =+ "${PN}-libs"
 FILES_${PN}-libs = "${libdir}/lib*${SOLIBS}"
+FILES_${PN} += "${nonarch_libdir}/tmpfiles.d"
 
 SYSTEMD_SERVICE_${PN} = "${BPN}.service"
 SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..71bf572
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,76 @@
+From 60987a1df8eb8c9196222375574dcd7bc0ad2daa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 20:23:27 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/evemu-impl.h |  5 +++++
+ src/evemu.c      | 16 +++++++++-------
+ 2 files changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/src/evemu-impl.h b/src/evemu-impl.h
+index acf2976..c08d861 100644
+--- a/src/evemu-impl.h
++++ b/src/evemu-impl.h
+@@ -21,6 +21,11 @@
+ #include <evemu.h>
+ #include <linux/uinput.h>
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define EVPLAY_NBITS	KEY_CNT
+ #define EVPLAY_NBYTES	((EVPLAY_NBITS + 7) / 8)
+ 
+diff --git a/src/evemu.c b/src/evemu.c
+index 21187af..160c915 100644
+--- a/src/evemu.c
++++ b/src/evemu.c
+@@ -363,7 +363,7 @@ int evemu_read(struct evemu_device *dev, FILE *fp)
+ int evemu_write_event(FILE *fp, const struct input_event *ev)
+ {
+ 	return fprintf(fp, "E: %lu.%06u %04x %04x %d\n",
+-		       ev->time.tv_sec, (unsigned)ev->time.tv_usec,
++		       ev->input_event_sec, (unsigned)ev->input_event_usec,
+ 		       ev->type, ev->code, ev->value);
+ }
+ 
+@@ -391,8 +391,8 @@ int evemu_read_event(FILE *fp, struct input_event *ev)
+ 	int value;
+ 	int ret = fscanf(fp, "E: %lu.%06u %04x %04x %d\n",
+ 			 &sec, &usec, &type, &code, &value);
+-	ev->time.tv_sec = sec;
+-	ev->time.tv_usec = usec;
++	ev->input_event_sec = sec;
++	ev->input_event_usec = usec;
+ 	ev->type = type;
+ 	ev->code = code;
+ 	ev->value = value;
+@@ -411,12 +411,14 @@ int evemu_read_event_realtime(FILE *fp, struct input_event *ev,
+ 
+ 	if (evtime) {
+ 		if (!evtime->tv_sec)
+-			*evtime = ev->time;
+-		usec = 1000000L * (ev->time.tv_sec - evtime->tv_sec);
+-		usec += ev->time.tv_usec - evtime->tv_usec;
++			evtime->tv_sec = ev->input_event_sec;
++			evtime->tv_usec = ev->input_event_usec;
++		usec = 1000000L * (ev->input_event_sec - evtime->tv_sec);
++		usec += ev->input_event_usec - evtime->tv_usec;
+ 		if (usec > 500) {
+ 			usleep(usec);
+-			*evtime = ev->time;
++			evtime->tv_sec = ev->input_event_sec;
++			evtime->tv_usec = ev->input_event_usec;
+ 		}
+ 	}
+ 
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
index 1dd5a86..41d1cbf 100644
--- a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
@@ -7,7 +7,9 @@
 
 inherit autotools
 
-SRC_URI = "git://bitmath.org/git/evemu.git;protocol=http"
+SRC_URI = "git://bitmath.org/git/evemu.git;protocol=http \
+           file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+           "
 SRCREV = "9752b50e922572e4cd214ac45ed95e4ee410fe24"
 
 PV = "1.0.5+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..d405d43
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,41 @@
+From 895b6996e232700fb2a428838feaef418cc64b70 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 22:52:13 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/frame-mtdev.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/frame-mtdev.c b/src/frame-mtdev.c
+index c0f15d8..42ad380 100644
+--- a/src/frame-mtdev.c
++++ b/src/frame-mtdev.c
+@@ -25,6 +25,11 @@
+ #include <errno.h>
+ #include <math.h>
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ static int is_pointer(const struct evemu_device *dev)
+ {
+ 	return evemu_has_event(dev, EV_REL, REL_X) ||
+@@ -200,7 +205,7 @@ static int handle_abs_event(utouch_frame_handle fh,
+ static utouch_frame_time_t get_evtime_ms(const struct input_event *syn)
+ {
+ 	static const utouch_frame_time_t ms = 1000;
+-	return syn->time.tv_usec / ms + syn->time.tv_sec * ms;
++	return syn->input_event_usec / ms + syn->input_event_sec * ms;
+ }
+ 
+ const struct utouch_frame *
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/files/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/utouch/files/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch
rename to meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/files/remove-man-page-creation.patch b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/remove-man-page-creation.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/utouch/files/remove-man-page-creation.patch
rename to meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/remove-man-page-creation.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
index 39d46af..1ebebfa 100644
--- a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
@@ -12,6 +12,7 @@
 SRC_URI = "git://bitmath.org/git/frame.git;protocol=http \
            file://remove-man-page-creation.patch \
            file://0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch \
+           file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
            "
 SRCREV = "95363d5a1f7394d71144bf3b408ef4e6db4350fc"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/export.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/export.patch
new file mode 100644
index 0000000..bfba333
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/export.patch
@@ -0,0 +1,77 @@
+Index: src/VBox/Additions/linux/export_modules.sh
+===================================================================
+--- a/src/VBox/Additions/linux/export_modules.sh
++++ b/src/VBox/Additions/linux/export_modules.sh
+@@ -46,7 +46,13 @@
+ VBOX_VERSION_MAJOR=`sed -e "s/^ *VBOX_VERSION_MAJOR *= \+\([0-9]\+\)/\1/;t;d" $PATH_ROOT/Version.kmk`
+ VBOX_VERSION_MINOR=`sed -e "s/^ *VBOX_VERSION_MINOR *= \+\([0-9]\+\)/\1/;t;d" $PATH_ROOT/Version.kmk`
+ VBOX_VERSION_BUILD=`sed -e "s/^ *VBOX_VERSION_BUILD *= \+\([0-9]\+\)/\1/;t;d" $PATH_ROOT/Version.kmk`
+-VBOX_SVN_REV=`sed -e 's/^ *VBOX_SVN_REV_FALLBACK *:= \+\$(patsubst *%:,, *\$Rev: *\([0-9]\+\) *\$ *) */\1/;t;d' $PATH_ROOT/Config.kmk`
++VBOX_SVN_CONFIG_REV=`sed -e 's/^ *VBOX_SVN_REV_CONFIG_FALLBACK *:= \+\$(patsubst *%:,, *\$Rev: *\([0-9]\+\) *\$ *) */\1/;t;d' $PATH_ROOT/Config.kmk`
++VBOX_SVN_VERSION_REV=`sed -e 's/^ *VBOX_SVN_REV_VERSION_FALLBACK *:= \+\$(patsubst *%:,, *\$Rev: *\([0-9]\+\) *\$ *) */\1/;t;d' $PATH_ROOT/Version.kmk`
++if [ "$VBOX_SVN_CONFIG_REV" -gt "$VBOX_SVN_VERSION_REV" ]; then
++    VBOX_SVN_REV=$VBOX_SVN_CONFIG_REV
++else
++    VBOX_SVN_REV=$VBOX_SVN_VERSION_REV
++fi
+ VBOX_VENDOR=`sed -e 's/^ *VBOX_VENDOR *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`
+ VBOX_VENDOR_SHORT=`sed -e 's/^ *VBOX_VENDOR_SHORT *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`
+ VBOX_PRODUCT=`sed -e 's/^ *VBOX_PRODUCT *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`
+Index: src/VBox/HostDrivers/linux/export_modules.sh
+===================================================================
+--- a/src/VBox/HostDrivers/linux/export_modules.sh
++++ b/src/VBox/HostDrivers/linux/export_modules.sh
+@@ -100,12 +100,26 @@
+ VBOX_VERSION_MINOR=`sed -e "s/^ *VBOX_VERSION_MINOR *= \+\([0-9]\+\)/\1/;t;d" $PATH_ROOT/Version.kmk`
+ VBOX_VERSION_BUILD=`sed -e "s/^ *VBOX_VERSION_BUILD *= \+\([0-9]\+\)/\1/;t;d" $PATH_ROOT/Version.kmk`
+ VBOX_VERSION_STRING=$VBOX_VERSION_MAJOR.$VBOX_VERSION_MINOR.$VBOX_VERSION_BUILD
+-VBOX_SVN_REV=`sed -e 's/^ *VBOX_SVN_REV_FALLBACK *:= \+\$(patsubst *%:,, *\$Rev: *\([0-9]\+\) *\$ *) */\1/;t;d' $PATH_ROOT/Config.kmk`                                                                                                        VBOX_VENDOR=`sed -e 's/^ *VBOX_VENDOR *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`                                     VBOX_VENDOR_SHORT=`sed -e 's/^ *VBOX_VENDOR_SHORT *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`                         VBOX_PRODUCT=`sed -e 's/^ *VBOX_PRODUCT *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`                                   VBOX_C_YEAR=`date +%Y`
++VBOX_VERSION_BUILD=`sed -e "s/^ *VBOX_VERSION_BUILD *= \+\([0-9]\+\)/\1/;t;d" $PATH_ROOT/Version.kmk`
++VBOX_SVN_CONFIG_REV=`sed -e 's/^ *VBOX_SVN_REV_CONFIG_FALLBACK *:= \+\$(patsubst *%:,, *\$Rev: *\([0-9]\+\) *\$ *) */\1/;t;d' $PATH_ROOT/Config.kmk`
++VBOX_SVN_VERSION_REV=`sed -e 's/^ *VBOX_SVN_REV_VERSION_FALLBACK *:= \+\$(patsubst *%:,, *\$Rev: *\([0-9]\+\) *\$ *) */\1/;t;d' $PATH_ROOT/Version.kmk`
++if [ "$VBOX_SVN_CONFIG_REV" -gt "$VBOX_SVN_VERSION_REV" ]; then
++    VBOX_SVN_REV=$VBOX_SVN_CONFIG_REV
++else
++    VBOX_SVN_REV=$VBOX_SVN_VERSION_REV
++fi
++VBOX_VENDOR=`sed -e 's/^ *VBOX_VENDOR *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`
++VBOX_VENDOR_SHORT=`sed -e 's/^ *VBOX_VENDOR_SHORT *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`
++VBOX_PRODUCT=`sed -e 's/^ *VBOX_PRODUCT *= \+\(.\+\)/\1/;t;d' $PATH_ROOT/Config.kmk`
++VBOX_C_YEAR=`date +%Y`
++VBOX_WITH_PCI_PASSTHROUGH=`sed -e "s/^ *VBOX_WITH_PCI_PASSTHROUGH *= *\(1\?\)/\1/;t;d" $PATH_ROOT/Config.kmk`
+ 
+ . $PATH_VBOXDRV/linux/files_vboxdrv
+ . $PATH_VBOXNET/linux/files_vboxnetflt
+ . $PATH_VBOXADP/linux/files_vboxnetadp
+-. $PATH_VBOXPCI/linux/files_vboxpci
++if [ "$VBOX_WITH_PCI_PASSTHROUGH" -eq "1" ]; then
++    . $PATH_VBOXPCI/linux/files_vboxpci
++fi
+ 
+ # Temporary path for creating the modules, will be removed later
+ rm -rf "$PATH_TMP"
+@@ -187,14 +201,16 @@
+ fi
+ 
+ # vboxpci (VirtualBox host PCI access kernel module)
+-mkdir $PATH_TMP/vboxpci || exit 1
+-for f in $VBOX_VBOXPCI_SOURCES; do
+-    install -D -m 0644 `echo $f|cut -d'=' -f1` "$PATH_TMP/vboxpci/`echo $f|cut -d'>' -f2`"
+-done
+-if [ -n "$VBOX_WITH_HARDENING" ]; then
+-    cat                                   $PATH_VBOXPCI/linux/Makefile > $PATH_TMP/vboxpci/Makefile
+-else
+-    sed -e "s;VBOX_WITH_HARDENING;;g" < $PATH_VBOXPCI/linux/Makefile > $PATH_TMP/vboxpci/Makefile
++if [ "$VBOX_WITH_PCI_PASSTHROUGH" -eq "1" ]; then
++    mkdir $PATH_TMP/vboxpci || exit 1
++    for f in $VBOX_VBOXPCI_SOURCES; do
++        install -D -m 0644 `echo $f|cut -d'=' -f1` "$PATH_TMP/vboxpci/`echo $f|cut -d'>' -f2`"
++    done
++    if [ -n "$VBOX_WITH_HARDENING" ]; then
++        cat                                   $PATH_VBOXPCI/linux/Makefile > $PATH_TMP/vboxpci/Makefile
++    else
++        sed -e "s;VBOX_WITH_HARDENING;;g" < $PATH_VBOXPCI/linux/Makefile > $PATH_TMP/vboxpci/Makefile
++    fi
+ fi
+ 
+ install -D -m 0644 $PATH_LINUX/Makefile $PATH_TMP/Makefile
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.22.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.0.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.22.bb
rename to meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.0.bb
index 0f8d7af..be18b10 100644
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.22.bb
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.0.bb
@@ -13,21 +13,22 @@
 
 SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
     file://Makefile.utils \
+    file://export.patch;patchdir=${WORKDIR}/${VBOX_NAME} \
 "
-SRC_URI[md5sum] = "c9c2f162ac5f99d28d8c0ca43b19ed01"
-SRC_URI[sha256sum] = "5580e875349341a1aabc6d5d2f697d242f277487316faaf1fbe68d9014f788d4"
+SRC_URI[md5sum] = "484b550f4692c9d61896b08bb0a1be7f"
+SRC_URI[sha256sum] = "49005ed94454f893fc3955e1e2b9607e85c300235cb983b39d1df2cfcf29f039"
 
 S = "${WORKDIR}/vbox_module"
 
 export BUILD_TARGET_ARCH="${ARCH}"
 export BUILD_TARGET_ARCH_x86-64="amd64"
 
-EXTRA_OEMAKE += "KERN_DIR='${WORKDIR}/${KERNEL_VERSION}/build'"
+EXTRA_OEMAKE += "KERN_DIR='${WORKDIR}/${KERNEL_VERSION}/build' KBUILD_VERBOSE=1"
 
 # otherwise 5.2.22 builds just vboxguest
 MAKE_TARGETS = "all"
 
-addtask export_sources before do_patch after do_unpack
+addtask export_sources after do_patch before do_configure
 
 do_export_sources() {
     mkdir -p "${S}"
@@ -50,7 +51,8 @@
 }
 
 # compile and install mount utility
-do_compile_append() {
+do_compile() {
+    oe_runmake all
     oe_runmake 'LD=${CC}' 'LDFLAGS=${LDFLAGS}' -C ${S}/utils
     if ! [ -e vboxguest.ko -a -e vboxsf.ko -a -e vboxvideo.ko ] ; then
         echo "ERROR: One of vbox*.ko modules wasn't built"
@@ -78,6 +80,3 @@
 
 # autoload if installed
 KERNEL_MODULE_AUTOLOAD += "vboxguest vboxsf vboxvideo"
-
-PNBLACKLIST[vboxguestdrivers] = "Needs forward porting to kernel 5.2+"
-
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Correct-clang-compiler-flags.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Correct-clang-compiler-flags.patch
new file mode 100644
index 0000000..4217897
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Correct-clang-compiler-flags.patch
@@ -0,0 +1,32 @@
+From 5ccaff351297bca0e254bbfd66e3f03fef9d9c75 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 10 Jan 2020 21:54:39 -0800
+Subject: [PATCH] Correct clang compiler flags
+
+Fix misplaced quotes, this was leading to spurious ; in compiler cmdline
+Remove demanding libc++, clang can link with both libc++ and libstdc++
+and platforms have their own defaults, user can demand non defaults via
+adding it to cmake flags
+
+Upstream-Status: Submitted [https://github.com/zaphoyd/websocketpp/pull/859]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2d13117..c17354a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -148,7 +148,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
+         endif()
+         set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto)
+         set (WEBSOCKETPP_BOOST_LIBS system thread)
+-        set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++0x -stdlib=libc++") # todo: is libc++ really needed here?
++        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+         if (NOT APPLE)
+             add_definitions (-DNDEBUG -Wall -Wno-padded) # todo: should we use CMAKE_C_FLAGS for these?
+         endif ()
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-cmake-Use-GNUInstallDirs.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-cmake-Use-GNUInstallDirs.patch
new file mode 100644
index 0000000..0ef2e12
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-cmake-Use-GNUInstallDirs.patch
@@ -0,0 +1,35 @@
+From 771d79eeb0ac5079482a4b3a131bbda744793e7d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 20:07:11 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs
+
+Helps install cmakefiles in right libdir
+
+Upstream-Status: Submitted [https://github.com/zaphoyd/websocketpp/pull/854]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2786aba..080be3e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,11 +39,13 @@ endif()
+ 
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+ 
++include(GNUInstallDirs)
++
+ set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
+ if (WIN32 AND NOT CYGWIN)
+   set (DEF_INSTALL_CMAKE_DIR cmake)
+ else ()
+-  set (DEF_INSTALL_CMAKE_DIR lib/cmake/websocketpp)
++  set (DEF_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/websocketpp)
+ endif ()
+ set (INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
+ 
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/771.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/771.patch
new file mode 100644
index 0000000..bc65efb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/771.patch
@@ -0,0 +1,22 @@
+From 4bccfb04a264704ec9b80ba332ee1cf113ce7f1b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= <c72578@yahoo.de>
+Date: Thu, 1 Nov 2018 20:58:10 +0100
+Subject: [PATCH] Update version number in CMakeLists.txt to 0.8.1
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2786aba9..2d13117b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -24,7 +24,7 @@ endif ()
+ ############ Project name and version
+ set (WEBSOCKETPP_MAJOR_VERSION 0)
+ set (WEBSOCKETPP_MINOR_VERSION 8)
+-set (WEBSOCKETPP_PATCH_VERSION 0)
++set (WEBSOCKETPP_PATCH_VERSION 1)
+ set (WEBSOCKETPP_VERSION ${WEBSOCKETPP_MAJOR_VERSION}.${WEBSOCKETPP_MINOR_VERSION}.${WEBSOCKETPP_PATCH_VERSION})
+ 
+ if(POLICY CMP0048)
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/842.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/842.patch
new file mode 100644
index 0000000..c3651e9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/842.patch
@@ -0,0 +1,30 @@
+From 7f7e2be01b4fa6580ce27f668e61adf37853ad67 Mon Sep 17 00:00:00 2001
+From: Schrijvers Luc <begasus@gmail.com>
+Date: Wed, 18 Sep 2019 11:35:43 +0200
+Subject: [PATCH] Fix "include" directory installation. the variable
+ INSTALL_INCLUDE_DIR already exists, and defaults to include if not
+ specificied otherwise. Using it allows people to customize the installation
+ from outside, fixing issues with other OS like Haiku
+
+Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org>
+---
+ cmake/CMakeHelpers.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/CMakeHelpers.cmake b/cmake/CMakeHelpers.cmake
+index 1478f4b..f603632 100644
+--- a/cmake/CMakeHelpers.cmake
++++ b/cmake/CMakeHelpers.cmake
+@@ -80,7 +80,7 @@ macro (final_target)
+     endif ()
+ 
+     install (DIRECTORY ${CMAKE_SOURCE_DIR}/${TARGET_NAME}
+-             DESTINATION include/
++             DESTINATION ${INSTALL_INCLUDE_DIR}/
+              FILES_MATCHING PATTERN "*.hpp*")
+ endmacro ()
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/855.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/855.patch
new file mode 100644
index 0000000..a1ee627
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/855.patch
@@ -0,0 +1,23 @@
+From 3590d77bb9753fbbf076028e2395182ced6466ba Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Wed, 8 Jan 2020 17:59:48 +0100
+Subject: [PATCH] Fix cmake find boost with version >= 1.71
+
+For some reasons "system;thread;random;unit_test_framework" was seen as a single module, because of the quotes.
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2d13117b..9a46bc10 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -213,7 +213,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
+     set (Boost_USE_MULTITHREADED TRUE)
+     set (Boost_ADDITIONAL_VERSIONS "1.39.0" "1.40.0" "1.41.0" "1.42.0" "1.43.0" "1.44.0" "1.46.1") # todo: someone who knows better spesify these!
+ 
+-    find_package (Boost 1.39.0 COMPONENTS "${WEBSOCKETPP_BOOST_LIBS}")
++    find_package (Boost 1.39.0 COMPONENTS ${WEBSOCKETPP_BOOST_LIBS})
+ 
+     if (Boost_FOUND)
+         # Boost is a project wide global dependency.
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/857.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/857.patch
new file mode 100644
index 0000000..f221cd6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/857.patch
@@ -0,0 +1,132 @@
+From 931a55347a322f38eb82d5f387b2924e6c7a1746 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Thu, 9 Jan 2020 10:07:20 +0100
+Subject: [PATCH] Update SConstruct with new Python3 syntax: - new raise
+ keyword syntax - has_key deprecated method is now removed - commands
+ deprecated library is replaced by subprocess - print function fixes
+
+This should fix FTBFS against new scons 3.1.2
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=947584
+---
+ SConstruct | 45 +++++++++++++++++++++++----------------------
+ 1 file changed, 23 insertions(+), 22 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index ae3df10b..9d1c8914 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1,18 +1,19 @@
+-import os, sys, commands
++import os, sys
++from subprocess import check_output
+ env = Environment(ENV = os.environ)
+ 
+ # figure out a better way to configure this
+-if os.environ.has_key('CXX'):
++if 'CXX' in os.environ:
+     env['CXX'] = os.environ['CXX']
+ 
+-if os.environ.has_key('DEBUG'):
++if 'DEBUG' in os.environ:
+     env['DEBUG'] = os.environ['DEBUG']
+ 
+-if os.environ.has_key('CXXFLAGS'):
++if 'CXXFLAGS' in os.environ:
+     #env['CXXFLAGS'] = os.environ['CXXFLAGS']
+     env.Append(CXXFLAGS = os.environ['CXXFLAGS'])
+ 
+-if os.environ.has_key('LINKFLAGS'):
++if 'LINKFLAGS' in os.environ:
+     #env['LDFLAGS'] = os.environ['LDFLAGS']
+     env.Append(LINKFLAGS = os.environ['LINKFLAGS'])
+ 
+@@ -22,24 +23,24 @@ if os.environ.has_key('LINKFLAGS'):
+ ## or set BOOST_INCLUDES and BOOST_LIBS if Boost comes with your OS distro e.g. and
+ ## needs BOOST_INCLUDES=/usr/include/boost and BOOST_LIBS=/usr/lib like Ubuntu.
+ ##
+-if os.environ.has_key('BOOSTROOT'):
++if 'BOOSTROOT' in os.environ:
+     os.environ['BOOST_ROOT'] = os.environ['BOOSTROOT']
+ 
+-if os.environ.has_key('BOOST_ROOT'):
++if 'BOOST_ROOT' in os.environ:
+    env['BOOST_INCLUDES'] = os.environ['BOOST_ROOT']
+    env['BOOST_LIBS'] = os.path.join(os.environ['BOOST_ROOT'], 'stage', 'lib')
+-elif os.environ.has_key('BOOST_INCLUDES') and os.environ.has_key('BOOST_LIBS'):
++elif 'BOOST_INCLUDES' in os.environ and 'BOOST_LIBS' in os.environ:
+    env['BOOST_INCLUDES'] = os.environ['BOOST_INCLUDES']
+    env['BOOST_LIBS'] = os.environ['BOOST_LIBS']
+ else:
+-   raise SCons.Errors.UserError, "Neither BOOST_ROOT, nor BOOST_INCLUDES + BOOST_LIBS was set!"
++   raise SCons.Errors.UserError("Neither BOOST_ROOT, nor BOOST_INCLUDES + BOOST_LIBS were set!")
+ 
+ ## Custom OpenSSL
+-if os.environ.has_key('OPENSSL_PATH'):
++if 'OPENSSL_PATH' in os.environ:
+    env.Append(CPPPATH = os.path.join(os.environ['OPENSSL_PATH'], 'include'))
+    env.Append(LIBPATH = os.environ['OPENSSL_PATH'])
+ 
+-if os.environ.has_key('WSPP_ENABLE_CPP11'):
++if 'WSPP_ENABLE_CPP11' in os.environ:
+    env['WSPP_ENABLE_CPP11'] = True
+ else:
+    env['WSPP_ENABLE_CPP11'] = False
+@@ -76,7 +77,7 @@ if env['PLATFORM'].startswith('win'):
+    env['CCFLAGS'] = '%s /EHsc /GR /GS- /MD /nologo %s %s' % (warn_flags, arch_flags, opt_flags)
+    env['LINKFLAGS'] = '/INCREMENTAL:NO /MANIFEST /NOLOGO /OPT:REF /OPT:ICF /MACHINE:X86'
+ elif env['PLATFORM'] == 'posix':
+-   if env.has_key('DEBUG'):
++   if 'DEBUG' in env:
+       env.Append(CCFLAGS = ['-g', '-O0'])
+    else:
+       env.Append(CPPDEFINES = ['NDEBUG'])
+@@ -84,9 +85,9 @@ elif env['PLATFORM'] == 'posix':
+    env.Append(CCFLAGS = ['-Wall'])
+    #env['LINKFLAGS'] = ''
+ elif env['PLATFORM'] == 'darwin':
+-   if not os.environ.has_key('CXX'):
++   if not 'CXX' in os.environ:
+       env['CXX'] = "clang++"
+-   if env.has_key('DEBUG'):
++   if 'DEBUG' in env:
+       env.Append(CCFLAGS = ['-g', '-O0'])
+    else:
+       env.Append(CPPDEFINES = ['NDEBUG'])
+@@ -157,29 +158,29 @@ env_cpp11 = env.Clone ()
+ 
+ if env_cpp11['CXX'].startswith('g++'):
+    # TODO: check g++ version
+-   GCC_VERSION = commands.getoutput(env_cpp11['CXX'] + ' -dumpversion')
++   GCC_VERSION = check_output([env_cpp11['CXX'], '-dumpversion'])
+ 
+-   if GCC_VERSION > "4.4.0":
+-      print "C++11 build environment partially enabled"
++   if GCC_VERSION.decode('utf-8') > "4.4.0":
++      print("C++11 build environment partially enabled")
+       env_cpp11.Append(WSPP_CPP11_ENABLED = "true",CXXFLAGS = ['-std=c++0x'],TOOLSET = ['g++'],CPPDEFINES = ['_WEBSOCKETPP_CPP11_STL_'])
+    else:
+-      print "C++11 build environment is not supported on this version of G++"
++      print("C++11 build environment is not supported on this version of G++")
+ elif env_cpp11['CXX'].startswith('clang++'):
+-   print "C++11 build environment enabled"
++   print("C++11 build environment enabled")
+    env.Append(CXXFLANGS = ['-stdlib=libc++'],LINKFLAGS=['-stdlib=libc++'])
+    env_cpp11.Append(WSPP_CPP11_ENABLED = "true",CXXFLAGS = ['-std=c++0x','-stdlib=libc++'],LINKFLAGS = ['-stdlib=libc++'],TOOLSET = ['clang++'],CPPDEFINES = ['_WEBSOCKETPP_CPP11_STL_'])
+ 
+    # look for optional second boostroot compiled with clang's libc++ STL library
+    # this prevents warnings/errors when linking code built with two different
+    # incompatible STL libraries.
+-   if os.environ.has_key('BOOST_ROOT_CPP11'):
++   if 'BOOST_ROOT_CPP11' in os.environ:
+       env_cpp11['BOOST_INCLUDES'] = os.environ['BOOST_ROOT_CPP11']
+       env_cpp11['BOOST_LIBS'] = os.path.join(os.environ['BOOST_ROOT_CPP11'], 'stage', 'lib')
+-   elif os.environ.has_key('BOOST_INCLUDES_CPP11') and os.environ.has_key('BOOST_LIBS_CPP11'):
++   elif 'BOOST_INCLUDES_CPP11' in os.environ and 'BOOST_LIBS_CPP11' in os.environ:
+       env_cpp11['BOOST_INCLUDES'] = os.environ['BOOST_INCLUDES_CPP11']
+       env_cpp11['BOOST_LIBS'] = os.environ['BOOST_LIBS_CPP11']
+ else:
+-   print "C++11 build environment disabled"
++   print("C++11 build environment disabled")
+ 
+ # if the build system is known to allow the isystem modifier for library include
+ # values then use it for the boost libraries. Otherwise just add them to the
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
index 5516217..af6d30a 100644
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
@@ -3,16 +3,40 @@
 HOMEPAGE = "https://github.com/zaphoyd/websocketpp"
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=4d168d763c111f4ffc62249870e4e0ea"
-DEPENDS = "openssl boost zlib"
+
+DEPENDS = " ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'openssl boost zlib', '', d)} "
 
 SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https \
            file://0001-Replace-make_shared-with-new-in-some-cases.patch \
            file://0002-Fix-missed-entries-fix-testing.patch \
+           file://0001-cmake-Use-GNUInstallDirs.patch \
+           file://842.patch \
+           file://771.patch \
+           file://855.patch \
+           file://857.patch \
+           file://0001-Correct-clang-compiler-flags.patch \
           "
 
+EXTRA_OECMAKE = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '-DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON', '', d)} "
+
+# this is an header only library, do not depend on the main package
+RDEPENDS_${PN}-dev = ""
+
+# to add this package to an SDK, since it isn't a reverse-dependency of anything, just use something like this:
+# TOOLCHAIN_TARGET_TASK_append = " websocketpp-dev"
+
 # tag 0.8.1
 SRCREV= "c6d7e295bf5a0ab9b5f896720cc1a0e0fdc397a7"
 
 S = "${WORKDIR}/git"
 
 inherit cmake
+
+PACKAGES =+ "${PN}-examples"
+
+FILES_${PN}-examples = "${docdir}"
+
+do_install_append() {
+	install -d ${D}${docdir}/${BPN}
+	cp -R ${S}/examples ${D}${docdir}/${BPN}
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb b/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
similarity index 65%
rename from meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb
rename to meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
index 9669d9b..d100030 100644
--- a/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb
+++ b/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
@@ -6,13 +6,15 @@
 
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-SRC_URI = "https://github.com/jmacd/xdelta-devel/releases/download/v${PV}/${BPN}-${PV}.tar.gz  \
-          "
-SRC_URI[md5sum] = "445d8be2ac512113d5ca601ae8359626"
-SRC_URI[sha256sum] = "0ccc9751ceaa4d90d6b06938a4deddb481816f5d9284bd07d2e728609cb300aa"
+
+SRC_URI = "git://github.com/jmacd/xdelta.git;branch=release3_1_apl"
+SRCREV = "4b4aed71a959fe11852e45242bb6524be85d3709"
+S = "${WORKDIR}/git/xdelta3"
 
 inherit autotools
 
 # Optional secondary compression
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[lzma] = "--with-liblzma,--without-liblzma,xz"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb b/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb
new file mode 100644
index 0000000..1d75d52
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb
@@ -0,0 +1,41 @@
+SUMMARY = "X.Org X cvt"
+HOMEPAGE = "https://linux.die.net/man/1/cvt"
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
+
+DEPENDS += "pixman-native xorgproto-native libxrandr-native"
+
+XORG_PN = "xorg-server"
+
+SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "c9fc7e21e11286dbedd22c00df652130"
+SRC_URI[sha256sum] = "a81d8243f37e75a03d4f8c55f96d0bc25802be6ec45c3bfa5cb614c6d01bac9d"
+
+S = "${WORKDIR}/${XORG_PN}-${PV}"
+B = "${WORKDIR}/build"
+
+inherit native pkgconfig
+
+do_configure[noexec] = "1"
+
+do_compile() {
+    cd ${S}
+    for header in `find -name '*.h'`; do
+        path=`dirname $header`
+        if ! echo "$incpaths" | grep -q "$path" ; then
+            incpaths="$incpaths -I$path"
+        fi
+    done
+    CFLAGS="${CFLAGS} -DXORG_VERSION_CURRENT=1 $incpaths `pkg-config --cflags pixman-1`"
+    LDFLAGS="${LDFLAGS} -lm `pkg-config --libs pixman-1`"
+    ${CC} $CFLAGS -o ${B}/cvt \
+        ${S}/hw/xfree86/utils/cvt/cvt.c \
+        ${S}/hw/xfree86/modes/xf86cvt.c \
+        ${S}/os/xprintf.c \
+        $LDFLAGS
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 755 ${B}/cvt ${D}${bindir}
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch b/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch
index 04239ba..c93af32 100644
--- a/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch
+++ b/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch
@@ -14,8 +14,6 @@
  configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/configure.ac b/configure.ac
-index 56d3dd0..9f85fd7 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -3,7 +3,7 @@ AC_PREREQ([2.61])
@@ -23,10 +21,16 @@
  AC_CONFIG_AUX_DIR(config)
  AC_CONFIG_MACRO_DIR(config)
 -AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects std-options dist-bzip2])
-+AM_INIT_AUTOMAKE([1.10 -Wall -Werror -Wno-portability foreign subdir-objects std-options dist-bzip2])
++AM_INIT_AUTOMAKE([1.10 -Wall -Wno-error foreign subdir-objects std-options dist-bzip2])
  AC_CONFIG_HEADERS([include/config.h])
  AC_CONFIG_SRCDIR(zbar/scanner.c)
  LT_PREREQ([2.2])
--- 
-2.10.2
-
+@@ -47,7 +47,7 @@ AC_DEFINE_UNQUOTED([LIB_VERSION_REVISION
+   [Library revision])
+ 
+ AM_CPPFLAGS="-I$srcdir/include"
+-AM_CFLAGS="-Wall -Wno-parentheses -Werror"
++AM_CFLAGS="-Wall -Wno-parentheses"
+ AM_CXXFLAGS="$AM_CFLAGS"
+ AC_SUBST([AM_CPPFLAGS])
+ AC_SUBST([AM_CFLAGS])
diff --git a/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch b/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch
deleted file mode 100644
index f7d8ba1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From f842872244219d9881fbec77054702412b1e16f8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 2 Dec 2016 16:41:27 -0800
-Subject: [PATCH] undefine __va_arg_pack
-
-dprintf() is also a libc function. This fixes
-the compile errors
-
-/usr/include/bits/stdio2.h:140:1: error: expected identifier or '(' before '{' token
-|  {
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- zbar/debug.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/zbar/debug.h b/zbar/debug.h
-index 482ca8d..68948f6 100644
---- a/zbar/debug.h
-+++ b/zbar/debug.h
-@@ -23,6 +23,7 @@
- 
- /* varargs variations on compile time debug spew */
- 
-+#undef __va_arg_pack
- #ifndef DEBUG_LEVEL
- 
- # ifdef __GNUC__
-@@ -36,15 +37,14 @@
- #else
- 
- # include <stdio.h>
--
- # ifdef __GNUC__
--#  define dprintf(level, args...) \
-+#  define dprintf(level, format, args...) \
-     if((level) <= DEBUG_LEVEL)    \
--        fprintf(stderr, args)
-+        fprintf(stderr, format, args)
- # else
--#  define dprintf(level, ...)     \
-+#  define dprintf(level, format, ...)     \
-     if((level) <= DEBUG_LEVEL)    \
--        fprintf(stderr, __VA_ARGS__)
-+        fprintf(stderr, format, __VA_ARGS__)
- # endif
- 
- #endif /* DEBUG_LEVEL */
--- 
-2.10.2
-
diff --git a/meta-openembedded/meta-oe/recipes-support/zbar/zbar_0.10.bb b/meta-openembedded/meta-oe/recipes-support/zbar/zbar_0.10.bb
deleted file mode 100644
index ebd1f7a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/zbar/zbar_0.10.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESRIPTION = "2D barcode scanner toolkit."
-SECTION = "graphics"
-LICENSE = "LGPL-2.1"
-
-DEPENDS = "pkgconfig intltool-native libpng jpeg"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=42bafded1b380c6fefbeb6c5cd5448d9"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \
-           file://0001-undefine-__va_arg_pack.patch \
-           file://0001-make-relies-GNU-extentions.patch \
-"
-
-SRC_URI[md5sum] = "0fd61eb590ac1bab62a77913c8b086a5"
-SRC_URI[sha256sum] = "234efb39dbbe5cef4189cc76f37afbe3cfcfb45ae52493bfe8e191318bdbadc6"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-
-PACKAGECONFIG[x11] = "--with-x,-without-x,libxcb libx11 libsm libxau libxext libxv libice libxdmcp"
-
-EXTRA_OECONF = " --without-imagemagick --without-qt --without-python --disable-video --without-gtk"
-
-do_install_append() {
-    #remove usr/bin if empty
-    rmdir ${D}${bindir}
-}
diff --git a/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb b/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
new file mode 100644
index 0000000..935e09c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
@@ -0,0 +1,31 @@
+DESRIPTION = "2D barcode scanner toolkit."
+SECTION = "graphics"
+LICENSE = "LGPL-2.1"
+
+DEPENDS = "pkgconfig intltool-native libpng jpeg"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4015840237ca7f0175cd626f78714ca8"
+
+PV = "0.10+git${SRCPV}"
+
+#  iPhoneSDK-1.3.1 tag
+SRCREV = "67003d2a985b5f9627bee2d8e3e0b26d0c474b57"
+SRC_URI = "git://github.com/ZBar/Zbar \
+           file://0001-make-relies-GNU-extentions.patch \
+"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+
+PACKAGECONFIG[x11] = "--with-x,-without-x,libxcb libx11 libsm libxau libxext libxv libice libxdmcp"
+
+EXTRA_OECONF = "--without-imagemagick --without-qt --without-python --disable-video --without-gtk"
+
+CPPFLAGS += "-Wno-error"
+
+do_install_append() {
+    #remove usr/bin if empty
+    rmdir ${D}${bindir}
+}
diff --git a/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.14.0.bb b/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.14.0.bb
rename to meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
index 0432786..92db31e 100644
--- a/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.14.0.bb
+++ b/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
@@ -8,7 +8,7 @@
     http://dev-www.libreoffice.org/src/cppunit-${PV}.tar.gz \
     file://0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch \
 "
-SRC_URI[md5sum] = "7ad93022171710a541bfe4bfd8b4a381"
-SRC_URI[sha256sum] = "3d569869d27b48860210c758c4f313082103a5e58219a7669b52bfd29d674780"
+SRC_URI[md5sum] = "9dc669e6145cadd9674873e24943e6dd"
+SRC_URI[sha256sum] = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..706322d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,41 @@
+From fa57c78c33d26084f85f1a6b4c29378631dc9395 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 11:58:58 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/libevdev/evtest/merge_requests/6]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ evtest.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/evtest.c b/evtest.c
+index 548c203..93063cd 100644
+--- a/evtest.c
++++ b/evtest.c
+@@ -61,6 +61,11 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define BITS_PER_LONG (sizeof(long) * 8)
+ #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
+ #define OFF(x)  ((x)%BITS_PER_LONG)
+@@ -1140,7 +1145,7 @@ static int print_events(int fd)
+ 			type = ev[i].type;
+ 			code = ev[i].code;
+ 
+-			printf("Event: time %ld.%06ld, ", ev[i].time.tv_sec, ev[i].time.tv_usec);
++			printf("Event: time %ld.%06ld, ", ev[i].input_event_sec, ev[i].input_event_sec);
+ 
+ 			if (type == EV_SYN) {
+ 				if (code == SYN_MT_REPORT)
diff --git a/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb b/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
index 3b6dc61..a3a23c8 100644
--- a/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
+++ b/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
@@ -8,8 +8,10 @@
 DEPENDS = "libxml2"
 
 SRCREV = "16e5104127a620686bdddc4a9ad62881134d6c69"
-SRC_URI = "git://anongit.freedesktop.org/evtest;protocol=git \
-           file://add_missing_limits_h_include.patch"
+SRC_URI = "git://gitlab.freedesktop.org/libevdev/evtest.git;protocol=https \
+           file://add_missing_limits_h_include.patch \
+           file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+           "
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb b/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
index b675ea0..354e7de 100644
--- a/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
+++ b/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
@@ -21,3 +21,11 @@
 RDEPENDS_${PN}-dev += "${PN}-staticdev"
 
 BBCLASSEXTEND = "native nativesdk"
+
+do_configure_prepend() {
+    # explicitly use python3
+    # the scripts are already python3 compatible since https://github.com/google/googletest/commit/d404af0d987a9c38cafce82a7e26ec8468c88361 and other fixes like this
+    # but since this oe-core change http://git.openembedded.org/openembedded-core/commit/?id=5f8f16b17f66966ae91aeabc23e97de5ecd17447
+    # there isn't python in HOSTTOOLS so "env python" fails
+    sed -i 's@^#!/usr/bin/env python$@#!/usr/bin/env python3@g' ${S}/googlemock/scripts/*py ${S}/googlemock/scripts/generator/*py ${S}/googlemock/scripts/generator/cpp/*py ${S}/googlemock/test/*py ${S}/googletest/scripts/*py ${S}/googletest/test/*py
+}
diff --git a/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb b/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb
index e695c58..80cf142 100644
--- a/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb
@@ -8,6 +8,7 @@
 
 SRC_URI = "https://launchpad.net/debian/+archive/primary/+sourcefiles/adduser/${PV}/${BPN}_${PV}.tar.xz \
            file://adduser-add-M-option-for-useradd.patch \
+           file://0001-adduser-set-default-shell-with-sbin-nologin.patch \
 "
 
 SRC_URI[md5sum] = "44ba2475ebdaafc9613236bdda321c97"
diff --git a/meta-openembedded/meta-perl/recipes-perl/adduser/files/0001-adduser-set-default-shell-with-sbin-nologin.patch b/meta-openembedded/meta-perl/recipes-perl/adduser/files/0001-adduser-set-default-shell-with-sbin-nologin.patch
new file mode 100644
index 0000000..91cc6bc
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/adduser/files/0001-adduser-set-default-shell-with-sbin-nologin.patch
@@ -0,0 +1,34 @@
+From 75e949bf80bf5e3e5bd8f81b258095e662b705c4 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Thu, 9 Jan 2020 13:51:28 +0800
+Subject: [PATCH] adduser: set default shell with /sbin/nologin
+
+Shell nologin whether provided by shadow or util-linux is installed to
+/sbin/nologin in oe-core. But the default shell of adduser is
+/usr/sbin/nologin and will fail to create a new user.
+
+Set the default shell with /sbin/nologin to fix the issue.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ adduser | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/adduser b/adduser
+index 0f24cc9..ab554d0 100755
+--- a/adduser
++++ b/adduser
+@@ -431,7 +431,7 @@ if ($action eq "addsysuser") {
+     printf gtx("Adding new user `%s' (UID %d) with group `%s' ...\n"),$new_name,$new_uid,$ingroup_name
+ 	if $verbose;
+     $home_dir = $special_home || &homedir($new_name, $ingroup_name);
+-    $shell = $special_shell || '/usr/sbin/nologin';
++    $shell = $special_shell || '/sbin/nologin';
+     $undouser = $new_name;
+     my $useradd = &which('useradd');
+     &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.318.bb b/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.318.bb
new file mode 100644
index 0000000..e4f8fe7
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.318.bb
@@ -0,0 +1,41 @@
+# Copyright (C) 2020 Jens Rehsack <sno@netbsd.org>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "A module to implement some of AutoConf macros in pure perl"
+DESCRIPTION = "Config::AutoConf is intended to provide the same opportunities to Perl \
+developers as GNU Autoconf <http://www.gnu.org/software/autoconf/> does for \
+Shell developers."
+
+HOMEPAGE=       "https://metacpan.org/release/Config-AutoConf"
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
+file://${COMMON_LICENSE_DIR}/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/R/RE/REHSACK/Config-AutoConf-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "0bea721ad3996e20324b84b3b924ec71"
+SRC_URI[sha256sum] = "33c930feec3003de251ca222abe8bbeb74610ad07f65fc16f27d74d195eeab34"
+RDEPENDS_${PN} += "libcapture-tiny-perl"
+RDEPENDS_${PN} += "perl-module-base"
+RDEPENDS_${PN} += "perl-module-carp"
+RDEPENDS_${PN} += "perl-module-config"
+RDEPENDS_${PN} += "perl-module-constant"
+RDEPENDS_${PN} += "perl-module-file-basename"
+RDEPENDS_${PN} += "perl-module-file-spec"
+RDEPENDS_${PN} += "perl-module-file-temp"
+RDEPENDS_${PN} += "perl-module-extutils-cbuilder"
+RDEPENDS_${PN} += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS_${PN} += "perl-module-scalar-util"
+RDEPENDS_${PN} += "perl-module-strict"
+RDEPENDS_${PN} += "perl-module-text-parsewords"
+RDEPENDS_${PN} += "perl-module-warnings"
+RRECOMMENDS_${PN} += "libfile-slurper-perl"
+
+S = "${WORKDIR}/Config-AutoConf-${PV}"
+
+inherit cpan ptest-perl allarch
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.012.bb b/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.012.bb
new file mode 100644
index 0000000..b684abd
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.012.bb
@@ -0,0 +1,36 @@
+SUMMARY = "A simple, sane and efficient module to slurp a file"
+DESCRIPTION = "This module provides functions for fast and correct slurping and spewing. \
+All functions are optionally exported. All functions throw exceptions on \
+errors, write functions don't return any meaningful value."
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+HOMEPAGE=       "https://metacpan.org/release/File-Slurper"
+
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
+file://${COMMON_LICENSE_DIR}/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/File-Slurper-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "5742c63096392dfee50b8db314bcca18"
+SRC_URI[sha256sum] = "4efb2ea416b110a1bda6f8133549cc6ea3676402e3caf7529fce0313250aa578"
+RDEPENDS_${PN} = " \
+    perl-module-carp \
+    perl-module-encode \
+    perl-module-exporter \
+    perl-module-perlio \
+    perl-module-perlio-encoding \
+    perl-module-strict \
+    perl-module-warnings \
+"
+
+RDEPENDS_${PN}-ptest += "libtest-warnings-perl \
+    perl-module-test-more \
+    "
+
+S = "${WORKDIR}/File-Slurper-${PV}"
+
+inherit cpan allarch ptest-perl
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb b/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb
new file mode 100644
index 0000000..a1bb4a3
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Perl interface to the libstatgrab library"
+DESCRIPTION = "Unix::Statgrab is a wrapper for libstatgrab as available from \
+<http://www.i-scream.org/libstatgrab/>. It is a reasonably portable attempt \
+to query interesting stats about your computer. It covers information on \
+the operating system, CPU, memory usage, network interfaces, hard-disks \
+etc."
+
+HOMEPAGE = "https://metacpan.org/release/Unix-Statgrab"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+ | LGPL-2.1+"
+DEPENDS += "libcapture-tiny-perl-native"
+DEPENDS += "libconfig-autoconf-perl-native"
+DEPENDS += "libstatgrab"
+RDEPENDS_${PN} += "\
+    libstatgrab \
+    perl-module-autoloader \
+    perl-module-carp \
+    perl-module-dynaloader \
+    perl-module-exporter \
+    perl-module-strict \
+    perl-module-vars \
+    perl-module-warnings \
+"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/R/RE/REHSACK/Unix-Statgrab-${PV}.tar.gz"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
+    file://${COMMON_LICENSE_DIR}/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d \
+    file://${COMMON_LICENSE_DIR}/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780 \
+"
+
+SRC_URI[md5sum] = "a6bc06b3f7749f7d77a2b1bd13402821"
+SRC_URI[sha256sum] = "16a29f7acaeec081bf0e7303ba5ee24fda1d21a1104669b837745f3ea61d6afa"
+
+S = "${WORKDIR}/Unix-Statgrab-${PV}"
+
+inherit cpan pkgconfig ptest-perl
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.028.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.028.bb
new file mode 100644
index 0000000..b40a545
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.028.bb
@@ -0,0 +1,29 @@
+# Copyright (C) 2020 Jens Rehsack <sno@netbsd.org>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "If you've ever tried to use Test::NoWarnings to confirm there are no \
+warnings generated by your tests, combined with the convenience of \
+\\"done_testing\\" to not have to declare a test count, you'll have discovered \
+that these two features do not play well together, as the test count will \
+be calculated *before* the warnings test is run, resulting in a TAP error. \
+(See "examples/test_nowarnings.pl" in this distribution for a \
+demonstration.)"
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+HOMEPAGE=       "https://metacpan.org/release/Test-Warnings"
+
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
+file://${COMMON_LICENSE_DIR}/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d"
+
+SRC_URI = "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Warnings-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "cd007342017fedfb02d6fde75602e473"
+SRC_URI[sha256sum] = "26fda9f8d279e943d27e43a4a3a5cea8a6592cd36e7308695f8dc6602262c0e0"
+
+S = "${WORKDIR}/Test-Warnings-${PV}"
+
+inherit cpan allarch ptest-perl
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman.inc b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman.inc
index beb2baf..8517079 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman.inc
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman.inc
@@ -4,8 +4,8 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-SRC_URI[md5sum] = "b7fa82034b1c0e1fb1b518ffe3bb4fc0"
-SRC_URI[sha256sum] = "46c64c0692063fd0c9fb0216d49f7884bec9fa9760d8473db4b1e2f8162fab4a"
+SRC_URI[md5sum] = "d60bdffbd9c920f005fdc5e05a8b94cd"
+SRC_URI[sha256sum] = "d3a63a039c82b08a1171b003eafa62c6f128aa4eaa1ce7a55a9401b48f9ad926"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.1.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.2.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.1.0.bb
rename to meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python-pyconnman_0.2.0.bb
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman/0001-Import-local-modules-by-relative-path-for-python3-su.patch b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman/0001-Import-local-modules-by-relative-path-for-python3-su.patch
deleted file mode 100644
index 977b4aa..0000000
--- a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman/0001-Import-local-modules-by-relative-path-for-python3-su.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 2e84adb042bfb742eb328220b97f79ddb28db44b Mon Sep 17 00:00:00 2001
-From: Haris Okanovic <haris.okanovic@ni.com>
-Date: Tue, 23 Oct 2018 21:39:56 +0000
-Subject: [PATCH] Import local modules by relative path for python3 support
-
-Upstream-Status: Submitted
----
- pyconnman/agent.py      | 2 +-
- pyconnman/interface.py  | 2 +-
- pyconnman/manager.py    | 2 +-
- pyconnman/service.py    | 2 +-
- pyconnman/technology.py | 2 +-
- 5 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/pyconnman/agent.py b/pyconnman/agent.py
-index f72de8d..453d783 100644
---- a/pyconnman/agent.py
-+++ b/pyconnman/agent.py
-@@ -1,5 +1,5 @@
- from __future__ import unicode_literals
--from exceptions import ConnCanceledException
-+from .exceptions import ConnCanceledException
- 
- import dbus.service
- 
-diff --git a/pyconnman/interface.py b/pyconnman/interface.py
-index 7d82e04..d540c81 100644
---- a/pyconnman/interface.py
-+++ b/pyconnman/interface.py
-@@ -4,7 +4,7 @@ import dbus
- import types
- import pprint
- 
--from exceptions import ConnSignalNameNotRecognisedException
-+from .exceptions import ConnSignalNameNotRecognisedException
- 
- 
- def translate_to_dbus_type(typeof, value):
-diff --git a/pyconnman/manager.py b/pyconnman/manager.py
-index f6f40a8..03244cc 100644
---- a/pyconnman/manager.py
-+++ b/pyconnman/manager.py
-@@ -1,6 +1,6 @@
- from __future__ import unicode_literals
- 
--from interface import ConnInterface
-+from .interface import ConnInterface
- 
- 
- class ConnManager(ConnInterface):
-diff --git a/pyconnman/service.py b/pyconnman/service.py
-index bbccced..c6b9241 100644
---- a/pyconnman/service.py
-+++ b/pyconnman/service.py
-@@ -1,6 +1,6 @@
- from __future__ import unicode_literals
- 
--from interface import ConnInterface
-+from .interface import ConnInterface
- 
- 
- class ConnService(ConnInterface):
-diff --git a/pyconnman/technology.py b/pyconnman/technology.py
-index 4777229..d25bad6 100644
---- a/pyconnman/technology.py
-+++ b/pyconnman/technology.py
-@@ -1,6 +1,6 @@
- from __future__ import unicode_literals
- 
--from interface import ConnInterface
-+from .interface import ConnInterface
- 
- 
- class ConnTechnology(ConnInterface):
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman_0.1.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman_0.1.0.bb
deleted file mode 100644
index 32bbe8b..0000000
--- a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman_0.1.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-pyconnman.inc
-
-inherit setuptools3
-
-SRC_URI_append = " \
-    file://0001-Import-local-modules-by-relative-path-for-python3-su.patch \
-"
-
-RDEPENDS_${PN} += "python3-dbus python3-pprint"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman_0.2.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman_0.2.0.bb
new file mode 100644
index 0000000..e0f3fdd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-pyconnman/python3-pyconnman_0.2.0.bb
@@ -0,0 +1,5 @@
+require python-pyconnman.inc
+
+inherit setuptools3
+
+RDEPENDS_${PN} += "python3-dbus python3-pprint"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.13.0.bb
similarity index 63%
rename from meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb
rename to meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.13.0.bb
index 10cff42..2d51619 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.11.0.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.13.0.bb
@@ -1,9 +1,9 @@
 SUMMARY = "Python bindings for the Apache Thrift RPC system"
 LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=e3641ae1a26cf5c12a3a71bd3030ab0e"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=e95cd2f17c70d3180a2b361332319fe0"
 
-SRC_URI[md5sum] = "36165d5c80e6b101dbe9fcf7ef524d51"
-SRC_URI[sha256sum] = "7d59ac4fdcb2c58037ebd4a9da5f9a49e3e034bf75b3f26d9fe48ba3d8806e6b"
+SRC_URI[md5sum] = "c3bc8d9a910d2c9ce26f2ad1f7c96762"
+SRC_URI[sha256sum] = "9af1c86bf73433afc6010ed376a6c6aca2b54099cc0d61895f640870a9ae7d89"
 
 inherit pypi setuptools
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
index 8245676..c94c142 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
@@ -2,8 +2,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=28aaf14a6592d14dbfb2f4abd597aa27"
 
-SRC_URI[md5sum] = "81ec3de9e2d9c389657f51bdc0d24984"
-SRC_URI[sha256sum] = "e6c6a4243e89c8d3e2342a1562b2388f3b524c9cac2fccc4d2c461a1320cc1c1"
+SRC_URI[md5sum] = "3d7584a8fb0203ec82b90baa726d2bd9"
+SRC_URI[sha256sum] = "3b0cb1948833e062f4048992fbc97ecfaaaac24aaa0d83a1202a99fb58af8c6d"
 
 PYPI_PACKAGE = "alembic"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.3.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.3.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc
index 9b8c1cb..de6e1a5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto.inc
@@ -6,8 +6,8 @@
 
 PYPI_PACKAGE = "asn1crypto"
 
-SRC_URI[md5sum] = "fc3815cdd4812505e3ee297740c5f5d3"
-SRC_URI[sha256sum] = "87620880a477123e01177a1f73d0f327210b43a3cdbd714efcd2fa49a8d7b384"
+SRC_URI[md5sum] = "daad112940181917e3ff169b47b9bd9a"
+SRC_URI[sha256sum] = "5a215cb8dc12f892244e3a113fe05397ee23c5c4ca7a69cd6e69811755efc42d"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_1.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_1.3.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_1.2.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-asn1crypto_1.3.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache.inc
new file mode 100644
index 0000000..bce44a2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache.inc
@@ -0,0 +1,19 @@
+SUMMARY = "Backport of functools.lru_cache from Python 3.3"
+HOMEPAGE = "https://github.com/jaraco/backports.functools_lru_cache"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=57;endline=57;md5=98fc3658e5970d26f6b2109808c766be"
+
+PYPI_PACKAGE = "backports.functools_lru_cache"
+
+SRC_URI[md5sum] = "20f53f54cd3f04b3346ce75a54959754"
+SRC_URI[sha256sum] = "9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151fda4f1a"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-threading \
+    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb
index 825444f..5e0f2f1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-backports-functools-lru-cache_1.5.bb
@@ -1,19 +1,2 @@
-SUMMARY = "Backport of functools.lru_cache from Python 3.3"
-HOMEPAGE = "https://github.com/jaraco/backports.functools_lru_cache"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://setup.py;beginline=57;endline=57;md5=98fc3658e5970d26f6b2109808c766be"
-
-PYPI_PACKAGE = "backports.functools_lru_cache"
-
-SRC_URI[md5sum] = "20f53f54cd3f04b3346ce75a54959754"
-SRC_URI[sha256sum] = "9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151fda4f1a"
-
-DEPENDS += "python-setuptools-scm-native"
-
-inherit setuptools pypi
-
-RDEPENDS_${PN} += "\
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-threading \
-    "
+require python-backports-functools-lru-cache.inc
+inherit setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc
index acf52dd..3e95bb7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4.inc
@@ -3,15 +3,15 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING.txt;md5=f2d38d8a40bf73fd4b3d16ca2e5882d1"
 
-SRC_URI[md5sum] = "be03d778cf61cf6734a480e2010d6657"
-SRC_URI[sha256sum] = "6135db2ba678168c07950f9a16c4031822c6f4aec75a65e0a97bc5ca09789931"
+SRC_URI[md5sum] = "5dbdb56c009e4632bae7bed1b385804b"
+SRC_URI[sha256sum] = "05fd825eb01c290877657a56df4c6e4c311b3965bda790c613a3d6fb01a5462a"
 
 inherit pypi
 
-RDEPENDS_${PN}_class-target = "\
-    ${PYTHON_PN}-core \
+RDEPENDS_${PN} = "\
     ${PYTHON_PN}-html5lib \
     ${PYTHON_PN}-lxml \
+    ${PYTHON_PN}-soupsieve \
 "
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.8.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.8.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-beautifulsoup4_4.8.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc
index da5d11f..32da348 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray.inc
@@ -1,10 +1,10 @@
 SUMMARY = "A high-level Python efficient arrays of booleans -- C extension"
 HOMEPAGE = "https://github.com/ilanschnell/bitarray"
 LICENSE = "PSF"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=00f0d12ccaf4e6b0b4fe501663621fa3"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=dc301a25ebe210dcc53b0a2d5a038eae"
 
-SRC_URI[md5sum] = "743d396a1012d6f7d791d8a526da302d"
-SRC_URI[sha256sum] = "9f578314c7808eb1416620dc7d7977d4787a65a4f61b4c9685343a860712615b"
+SRC_URI[md5sum] = "a46bf869f6adf34f5b0dc82b469793b7"
+SRC_URI[sha256sum] = "2ed675f460bb0d3d66fd8042a6f1f0d36cf213e52e72a745283ddb245da7b9cf"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_1.2.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_1.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_1.2.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-booleanpy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-booleanpy.inc
new file mode 100644
index 0000000..335d7d3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-booleanpy.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL"
+HOMEPAGE = "https://github.com/bastikr/boolean.py"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e319747a5eb94cddf646037c01ddba47"
+
+SRC_URI[md5sum] = "1189d115a38f84f5df743014926a9159"
+SRC_URI[sha256sum] = "bd19b412435611ecc712603d0fd7d0e280e24698e7a6e3d5f610473870c5dd1e"
+
+PYPI_PACKAGE = "boolean.py"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cachetools.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cachetools.inc
index 9c79380..f3d3bc6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-cachetools.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cachetools.inc
@@ -10,7 +10,7 @@
 
 inherit pypi
 
-SRC_URI[md5sum] = "91aa9b611b6345154df84e8e37746f41"
-SRC_URI[sha256sum] = "8ea2d3ce97850f31e4a08b0e2b5e6c34997d7216a9d2c98e0f3978630d4da69a"
+SRC_URI[md5sum] = "6a88df13467e80eb61dd2bedad19b83c"
+SRC_URI[sha256sum] = "9a52dd97a85f257f4e4127f15818e71a0c7899f121b34591fcc1173ea79a0198"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cachetools_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cachetools_4.0.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-cachetools_3.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-cachetools_4.0.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
index de02d9a..98fa1f2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
@@ -7,7 +7,7 @@
 LICENSE = "ISC"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f77f61d14ee6feac4228d3ebd26cc1f1"
 
-SRC_URI[md5sum] = "cadd4e373fc08f649fa39b82aed9ad96"
-SRC_URI[sha256sum] = "e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50"
+SRC_URI[md5sum] = "4d5229c4d9f0a4a79106f9e2c2cfd381"
+SRC_URI[sha256sum] = "25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2019.9.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2019.11.28.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2019.9.11.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2019.11.28.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2.inc
index 3a6bf54..ceaa181 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2.inc
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=01aeabea7ae1529a8e4b674b7107d6bc"
 
-SRC_URI[md5sum] = "20f3f76b2aaf36a17372717b469ca969"
-SRC_URI[sha256sum] = "c81284083d993af18b8fef57d89d854d49d051d4c2c8a8e12d0281e369ac3682"
+SRC_URI[md5sum] = "90dccab3a20106c543ef85d2bee720bb"
+SRC_URI[sha256sum] = "ba244b07c0b465ff54a6838dc61919599141dc92de1bf00bb0a70875189155e6"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.22.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.19.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.22.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-coloredlogs.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-coloredlogs.inc
index f43bea1..bdb1d75 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-coloredlogs.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-coloredlogs.inc
@@ -10,7 +10,7 @@
 inherit pypi
 
 do_compile_prepend() {
-    sed -ie "s/find_pth_directory(),/'',/g" setup.py
+    sed -ie "s/find_pth_directory(),/'',/g" ${S}/setup.py
 }
 
 do_install_append() {
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.14.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.12.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.14.bb
index f08fa20..b89d7d2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.12.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-dbus_1.2.14.bb
@@ -9,8 +9,8 @@
 SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \
 "
 
-SRC_URI[md5sum] = "428b7a9e7e2d154a7ceb3e13536283e4"
-SRC_URI[sha256sum] = "cdd4de2c4f5e58f287b12013ed7b41dee81d503c8d0d2397c5bd2fb01badf260"
+SRC_URI[md5sum] = "c8739234fca9fba26368d1a337abe830"
+SRC_URI[sha256sum] = "b10206ba3dd641e4e46411ab91471c88e0eec1749860e4285193ee68df84ac31"
 S = "${WORKDIR}/dbus-python-${PV}"
 
 inherit distutils-base autotools pkgconfig
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc
index 1347130..57b7b18 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-engineio.inc
@@ -9,5 +9,5 @@
 
 PYPI_PACKAGE = "python-engineio"
 
-SRC_URI[md5sum] = "bec3b06a112a7f09a0a9c92b627282fe"
-SRC_URI[sha256sum] = "9c9a6035b4b5e5a225f426f846afa14cf627f7571d1ae02167cb703fefd134b7"
+SRC_URI[md5sum] = "327c16ca05e9b0cc4f994b9d35c7f7d7"
+SRC_URI[sha256sum] = "50d108fc7feb7f970e6ebc86733752ebd714545bb5622383e6135bdad45fc9fe"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-engineio_3.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-engineio_3.11.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-engineio_3.10.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-engineio_3.11.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
index 953094b..a536815 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev.inc
@@ -3,6 +3,10 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=18debddbb3f52c661a129724a883a8e2"
 
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-evdev:"
+
+SRC_URI += " file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch"
+
 SRC_URI[md5sum] = "53e440943dfa2514f95b3c448d6a36cb"
 SRC_URI[sha256sum] = "b03f5e1be5b4a5327494a981b831d251a142b09e8778eda1a8b53eba91100166"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000..154172c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,83 @@
+From 435e78aaf6745e4da0fe3d4455473011626c77d1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 11:21:20 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://github.com/gvalkov/python-evdev/pull/112]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ evdev/input.c  | 13 +++++++++----
+ evdev/uinput.c |  9 ++++++++-
+ 2 files changed, 17 insertions(+), 5 deletions(-)
+
+diff --git a/evdev/input.c b/evdev/input.c
+index 67b9348..432db92 100644
+--- a/evdev/input.c
++++ b/evdev/input.c
+@@ -24,6 +24,11 @@
+ #include <linux/input.h>
+ #endif
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define MAX_NAME_SIZE 256
+ 
+ extern char*  EV_NAME[EV_CNT];
+@@ -60,8 +65,8 @@ device_read(PyObject *self, PyObject *args)
+         return NULL;
+     }
+ 
+-    PyObject* sec  = PyLong_FromLong(event.time.tv_sec);
+-    PyObject* usec = PyLong_FromLong(event.time.tv_usec);
++    PyObject* sec  = PyLong_FromLong(event.input_event_sec);
++    PyObject* usec = PyLong_FromLong(event.input_event_usec);
+     PyObject* val  = PyLong_FromLong(event.value);
+     PyObject* py_input_event = NULL;
+ 
+@@ -102,8 +107,8 @@ device_read_many(PyObject *self, PyObject *args)
+ 
+     // Construct a list of event tuples, which we'll make sense of in Python
+     for (unsigned i = 0 ; i < nread/event_size ; i++) {
+-        sec  = PyLong_FromLong(event[i].time.tv_sec);
+-        usec = PyLong_FromLong(event[i].time.tv_usec);
++        sec  = PyLong_FromLong(event[i].input_event_sec);
++        usec = PyLong_FromLong(event[i].input_event_usec);
+         val  = PyLong_FromLong(event[i].value);
+ 
+         py_input_event = Py_BuildValue("OOhhO", sec, usec, event[i].type, event[i].code, val);
+diff --git a/evdev/uinput.c b/evdev/uinput.c
+index 192568d..56fe86c 100644
+--- a/evdev/uinput.c
++++ b/evdev/uinput.c
+@@ -16,6 +16,10 @@
+ #include <linux/uinput.h>
+ #endif
+ 
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
+ 
+ // Workaround for installing on kernels newer than 4.4.
+ #ifndef FF_MAX_EFFECTS
+@@ -232,8 +236,11 @@ uinput_write(PyObject *self, PyObject *args)
+     if (!ret) return NULL;
+ 
+     struct input_event event;
++    struct timeval tval;
+     memset(&event, 0, sizeof(event));
+-    gettimeofday(&event.time, 0);
++    gettimeofday(&tval, 0);
++    event.input_event_usec = tval.tv_usec;
++    event.input_event_sec = tval.tv_sec;
+     event.type = type;
+     event.code = code;
+     event.value = value;
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-html2text.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-html2text.inc
new file mode 100644
index 0000000..678dcef
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-html2text.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Convert HTML to Markdown-formatted text"
+HOMEPAGE = "https://github.com/Alir3z4/html2text"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI[md5sum] = "21aad7ec95b70606024b783c8253899c"
+SRC_URI[sha256sum] = "f516b9c10284174e2a974d86f91cab02b3cf983a17752075da751af0e895ef5e"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress.inc
index a230206..129cf22 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress.inc
@@ -3,8 +3,6 @@
 LICENSE = "Python-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=7f538584cc3407bf76042def7168548a"
 
-DEPENDS += "${PYTHON_PN}-pip"
-
 SRC_URI[md5sum] = "aaee67a8026782af1831148beb0d9060"
 SRC_URI[sha256sum] = "b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
index d36f029..b6e4836 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer.inc
@@ -11,3 +11,5 @@
 RDEPENDS_${PN} += " \
     ${PYTHON_PN}-json \
 "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
index 258bead..8135b0f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
@@ -7,10 +7,8 @@
 
 FILESEXTRAPATHS_prepend := "${THISDIR}/python-jsonschema:"
 
-SRC_URI_append = " file://0001-setup.cfg-add-non-GPL-format-option.patch"
-
-SRC_URI[md5sum] = "a802ab85600074a726ef6acc4e6a8148"
-SRC_URI[sha256sum] = "2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f"
+SRC_URI[md5sum] = "f1a0b5011f05a02a8dee1070cd10a26d"
+SRC_URI[sha256sum] = "c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"
 
 PACKAGECONFIG ??= "format"
 PACKAGECONFIG[format] = ",,,\
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema/0001-setup.cfg-add-non-GPL-format-option.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema/0001-setup.cfg-add-non-GPL-format-option.patch
deleted file mode 100644
index afc38a3..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema/0001-setup.cfg-add-non-GPL-format-option.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 8df0332475991884b8e1801d31f9c3e06d06bf9f Mon Sep 17 00:00:00 2001
-From: Nicola Lunghi <nick83ola@gmail.com>
-Date: Thu, 14 Nov 2019 18:58:56 +0000
-Subject: [PATCH] setup.cfg: add non GPL format option
-
-This is a rewrite of the following upstream commits:
-
- - 10f8a3e Add format validators as separate modules
- - af37707 non GPL format option
-
-removing all the non necessary bits (tox in particular)
-
-Original author: Nicolas Aimetti <naimetti@yahoo.com.ar>
-
-Upstream-status: Backported. [ to be removed for releases > 3.1.1 ]
----
- jsonschema/_format.py | 33 ++++++++++++++++++++++++++++-----
- setup.cfg             |  6 ++++++
- 2 files changed, 34 insertions(+), 5 deletions(-)
-
-diff --git a/jsonschema/_format.py b/jsonschema/_format.py
-index aa04090..c967d98 100644
---- a/jsonschema/_format.py
-+++ b/jsonschema/_format.py
-@@ -248,7 +248,26 @@ else:
- try:
-     import rfc3987
- except ImportError:
--    pass
-+    try:
-+        from rfc3986_validator import validate_rfc3986
-+    except ImportError:
-+        pass
-+    else:
-+        @_checks_drafts(name="uri",)
-+        def is_uri(instance):
-+            if not isinstance(instance, str_types):
-+                return True
-+            return validate_rfc3986(instance, rule="URI")
-+
-+        @_checks_drafts(
-+            draft6="uri-reference",
-+            draft7="uri-reference",
-+            raises=ValueError,
-+        )
-+        def is_uri_reference(instance):
-+            if not isinstance(instance, str_types):
-+                return True
-+            return validate_rfc3986(instance, rule="URI_reference")
- else:
-     @_checks_drafts(draft7="iri", raises=ValueError)
-     def is_iri(instance):
-@@ -280,15 +299,19 @@ else:
- 
- 
- try:
--    import strict_rfc3339
-+    from strict_rfc3339 import validate_rfc3339
- except ImportError:
--    pass
--else:
-+    try:
-+        from rfc3339_validator import validate_rfc3339
-+    except ImportError:
-+        validate_rfc3339 = None
-+
-+if validate_rfc3339:
-     @_checks_drafts(name="date-time")
-     def is_datetime(instance):
-         if not isinstance(instance, str_types):
-             return True
--        return strict_rfc3339.validate_rfc3339(instance)
-+        return validate_rfc3339(instance)
- 
-     @_checks_drafts(draft7="time")
-     def is_time(instance):
-diff --git a/setup.cfg b/setup.cfg
-index 74bc4a7..878221c 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -40,6 +40,12 @@ format =
- 	rfc3987
- 	strict-rfc3339
- 	webcolors
-+format_nongpl =
-+	idna
-+	jsonpointer>1.13
-+	webcolors
-+	rfc3986-validator>0.1.0
-+	rfc3339-validator
- 
- [options.entry_points]
- console_scripts = 
--- 
-2.20.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_3.2.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_3.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_3.2.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-license-expression.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-license-expression.inc
new file mode 100644
index 0000000..4c35e8d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-license-expression.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Utility library to parse, compare, simplify and normalize license expressions"
+HOMEPAGE = "https://github.com/nexB/license-expression"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://apache-2.0.LICENSE;md5=e23fadd6ceef8c618fc1c65191d846fa"
+
+SRC_URI[md5sum] = "81477f779099f55071c6a7b88a29bb01"
+SRC_URI[sha256sum] = "8aaa455c5b97c4f2174090178b19792b2a1c620e80591aafd4e0a99b713f9e8d"
+
+inherit pypi
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-booleanpy \
+    "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
index a97167f..df9573b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
@@ -18,8 +18,8 @@
 
 DEPENDS += "libxml2 libxslt"
 
-SRC_URI[md5sum] = "ce976a2d3c630d7fde86d3a4c3a1c606"
-SRC_URI[sha256sum] = "c81cb40bff373ab7a7446d6bbca0190bccc5be3448b47b51d729e37799bb5692"
+SRC_URI[md5sum] = "235c1a22d97a174144e76b66ce62ae46"
+SRC_URI[sha256sum] = "eff69ddbf3ad86375c344339371168640951c302450c5d3e9936e98d6459db06"
 
 DISTUTILS_BUILD_ARGS += " \
                      --with-xslt-config='pkg-config libxslt' \
@@ -45,11 +45,6 @@
 BUILD_OPTIMIZATION_remove_mipsel = " -Og"
 BUILD_OPTIMIZATION_append_mipsel = " -O"
 
-do_configure_prepend() {
-    sed -i -e 's/--version/--modversion/' ${B}/setupinfo.py
-}
-
 BBCLASSEXTEND = "native nativesdk"
 
 RDEPENDS_${PN} += "libxml2 libxslt ${PYTHON_PN}-compression"
-RDEPENDS_${PN}_class-native = "libxml2-native libxslt-native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.4.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-lxml_4.4.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc
index a36ab8a..5f5444f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto.inc
@@ -32,7 +32,7 @@
 #
 do_configure_prepend() {
     ${CPP} -dM - < /dev/null | grep -v '__\(STDC\|REGISTER_PREFIX\|GNUC\|STDC_HOSTED\)__' \
-    | sed 's/^\(#define \([^ ]*\) .*\)$/#undef \2\n\1/' > SWIG/gcc_macros.h
+    | sed 's/^\(#define \([^ ]*\) .*\)$/#undef \2\n\1/' > ${S}/SWIG/gcc_macros.h
 
     if [ "${SITEINFO_BITS}" = "64" ];then
         bit="64"
@@ -42,11 +42,11 @@
 
     if [ -e ${STAGING_INCDIR}/openssl/opensslconf-${bit}.h ] ;then
         for i in SWIG/_ec.i SWIG/_evp.i; do
-            sed -i -e "s/opensslconf.*\./opensslconf-${bit}\./" "$i"
+            sed -i -e "s/opensslconf.*\./opensslconf-${bit}\./" "${S}/$i"
         done
     elif [ -e ${STAGING_INCDIR}/openssl/opensslconf-n${bit}.h ] ;then
         for i in SWIG/_ec.i SWIG/_evp.i; do
-            sed -i -e "s/opensslconf.*\./opensslconf-n${bit}\./" "$i"
+            sed -i -e "s/opensslconf.*\./opensslconf-n${bit}\./" "${S}/$i"
         done
     fi
 }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc
index ccd5a93..5ce67f1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-parse.inc
@@ -1,10 +1,10 @@
 SUMMARY = "Parse strings using a specification based on the Python format() syntax"
 HOMEPAGE = "https://github.com/r1chardj0n3s/parse"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://parse.py;beginline=1317;endline=1337;md5=fa03bae3f51a2db25e239e869c647437"
+LIC_FILES_CHKSUM = "file://parse.py;beginline=1325;endline=1345;md5=fa03bae3f51a2db25e239e869c647437"
 
-SRC_URI[md5sum] = "8fc634769f1d841f14a52dd731ca447a"
-SRC_URI[sha256sum] = "a5fca7000c6588d77bc65c28f3f21bfce03b5e44daa8f9f07c17fe364990d717"
+SRC_URI[md5sum] = "07cbb5ba1025cbfe92fc3376c372dda5"
+SRC_URI[sha256sum] = "95a4f4469e37c57b5e924629ac99926f28bee7da59515dc5b8078c4c3e779249"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.12.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.14.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.12.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.14.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
index 8a6d7e9..9cf0280 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
@@ -7,10 +7,10 @@
 hashing for multi-user applications."
 HOMEPAGE = "https://bitbucket.org/ecollins/passlib"
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=73eed1a5470b969951dac411086c7036"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=44fd7dcd5d42b48d6dea59ac643a0179"
 
-SRC_URI[md5sum] = "254869dae3fd9f09f0746a3cb29a0b15"
-SRC_URI[sha256sum] = "3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0"
+SRC_URI[md5sum] = "b908529cfd4c33057c244324c692eae7"
+SRC_URI[sha256sum] = "8d666cef936198bc2ab47ee9b0410c94adf2ba798e5a84bf220be079ae7ab6a8"
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-crypt \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.7.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.2.3.bb
similarity index 71%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.2.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.2.3.bb
index 2778fc6..c3d4fdd 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.2.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.2.3.bb
@@ -5,8 +5,8 @@
 
 LIC_FILES_CHKSUM = "file://docs/license.txt;md5=1798f29d55080c60365e6283cb49779c"
 
-SRC_URI[md5sum] = "788fceb192bc338f1a3e2a8f78fd42b6"
-SRC_URI[sha256sum] = "0b1f4d86f8366f0d4093e5449813792c98e760edc6b7c918f0f29f9ef22ae996"
+SRC_URI[md5sum] = "7dc6dbd20e358dd95bd42eef5c6cc84c"
+SRC_URI[sha256sum] = "8bdc7f6be907eed7cd63868c79d88af2b87d02d840fb5acfc93d4bda572b1567"
 
 PYPI_PACKAGE = "Paste"
 inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_5.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_5.4.4.bb
similarity index 62%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pbr_5.4.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pbr_5.4.4.bb
index b21722f..9d7d8d7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_5.4.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pbr_5.4.4.bb
@@ -2,8 +2,8 @@
 # The inc file is in oe-core
 require recipes-devtools/python/python-pbr.inc
 
-SRC_URI[md5sum] = "477d2aa285ad97250a172b199f4060b7"
-SRC_URI[sha256sum] = "2c8e420cd4ed4cec4e7999ee47409e876af575d4c35a45840d59e8b5f3155ab8"
+SRC_URI[md5sum] = "65cdc32e1a1ff56d481fc15aa8caf988"
+SRC_URI[sha256sum] = "139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b"
 
 do_install_append() {
         if [ -f ${D}${bindir}/pbr ]; then
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
index efeab83..6d78eb9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect.inc
@@ -4,8 +4,8 @@
 LICENSE = "ISC"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1c7a725251880af8c6a148181665385b"
 
-SRC_URI[md5sum] = "d4f3372965a996238d57d19b95d2e03a"
-SRC_URI[sha256sum] = "2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba"
+SRC_URI[md5sum] = "ed003242cbf308aee1b1eaecdef59e43"
+SRC_URI[sha256sum] = "9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb"
 
 UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/pexpect"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.7.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pexpect_4.7.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
index 1931532..7585984 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
 
-SRC_URI[md5sum] = "4b8384b69cddbc2e104fdd3ff5631788"
-SRC_URI[sha256sum] = "fa5fa1622fa6dd5c030e9cad086fa19ef6a0cf6d7a2d12318e10cb49d6d68f34"
+SRC_URI[md5sum] = "7f610e28b8b34487336b585a3dfb803d"
+SRC_URI[sha256sum] = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 RDEPENDS_${PN} += "${PYTHON_PN}-importlib-metadata \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.13.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.13.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.13.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
index 9312266..bf49d98 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil.inc
@@ -2,8 +2,8 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e35fd9f271d19d5f742f20a9d1f8bb8b"
 
-SRC_URI[md5sum] = "5561dfe61b5888fb1b3f17fbe4eeb15d"
-SRC_URI[sha256sum] = "d051532ac944f1be0179e0506f6889833cf96e466262523e57a871de65a15147"
+SRC_URI[md5sum] = "b2c94e0368fc6e6f237a7252f8e85ca2"
+SRC_URI[sha256sum] = "ffad8eb2ac614518bbe3c0b8eb9dffdb3a8d2e3a7d5da51c5b974fb723a5c5aa"
 
 PACKAGES =+ "${PN}-tests"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.6.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.6.7.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.6.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-psutil_5.6.7.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc
index b6e0409..2b48abe 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-py.inc
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
 
-SRC_URI[md5sum] = "d9e30436ce7e79f30847f9b30b62e149"
-SRC_URI[sha256sum] = "dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"
+SRC_URI[md5sum] = "42c67de84b07ac9cc867b8b70843a45b"
+SRC_URI[sha256sum] = "5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.8.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-py_1.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-py_1.8.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
index 014fcf9..d74c2fe 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
@@ -3,8 +3,8 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=a14482d15c2249de3b6f0e8a47e021fd"
 
-SRC_URI[md5sum] = "50290e833395016c49903f4f9c7e47e5"
-SRC_URI[sha256sum] = "a9495356ca1d66ed197a0f72b41eb1823cf7ea8b5bd07191673e8147aecf8604"
+SRC_URI[md5sum] = "dffae4ff9f997a83324b3f33fe62be54"
+SRC_URI[sha256sum] = "aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"
 
 RDEPENDS_${PN}_class-target += " \
     ${PYTHON_PN}-codecs \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.8.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.4.8.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc
index 50ffd0a..31d1368 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome.inc
@@ -5,8 +5,8 @@
 LICENSE = "PD & BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=6dc0e2a13d2f25d6f123c434b761faba"
 
-SRC_URI[md5sum] = "c4e53f9ed33ca883b18249b9e1546251"
-SRC_URI[sha256sum] = "39ddc3c493125494572e0beefa8e8e6a43369e93c3c3e163cb871b37c1c62fba"
+SRC_URI[md5sum] = "f990716b49add7b14ea8b8a961fb3746"
+SRC_URI[sha256sum] = "a168e73879619b467072509a223282a02c8047d932a48b74fbd498f27224aa04"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.9.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.9.4.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.9.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pycryptodome_3.9.4.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
index 4c61d9f..6c47492 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
@@ -3,8 +3,8 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
 
-SRC_URI[md5sum] = "77aef367e57ba7dcc6f9b3d445a960ed"
-SRC_URI[sha256sum] = "de67196f6a8916b9c52a84a1c45ea967c53fa9d2b3795b070ad2c1cbc28d79d7"
+SRC_URI[md5sum] = "57184785340e25469e4a80ff9ddce09e"
+SRC_URI[sha256sum] = "594ea0a9e150052232425009eac6dd104a80f494d0e273cc48dd114d7ea8482b"
 
 RDEPENDS_${PN} += " \
     ${PYTHON_PN}-dateutil \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.117.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.119.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.117.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.4.119.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
index cd11d98..dc78b10 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
@@ -8,8 +8,8 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI[md5sum] = "531786df7ad98f15c43f1b17edf5f84c"
-SRC_URI[sha256sum] = "4249c6ba45587b959292a727532826c5032d59171f923f7f823788f413c2a5a3"
+SRC_URI[md5sum] = "fb98d896f0eb14d9b4fe9baac24d772a"
+SRC_URI[sha256sum] = "c43879fe427ea6aa6e84dae9fbdc5aa14428a4cfe613fe0fee2cc004bf3f307c"
 
 PACKAGES =+ "${PYTHON_PN}-bson"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.10.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.9.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.10.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc
index 00c103f..c6a4005 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl.inc
@@ -5,8 +5,8 @@
 
 DEPENDS += "openssl ${PYTHON_PN}-cryptography"
 
-SRC_URI[md5sum] = "b9876625dc1d5a5a662d748689191537"
-SRC_URI[sha256sum] = "aeca66338f6de19d1aa46ed634c3b9ae519a64b458f8468aec688e7e3c20f200"
+SRC_URI[md5sum] = "d9804fedbd1eb0c7d9243397b1fbf972"
+SRC_URI[sha256sum] = "9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507"
 
 PYPI_PACKAGE = "pyOpenSSL"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_19.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_19.1.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_19.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_19.1.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc
index bf89be6..2b9925f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing.inc
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
 
-SRC_URI[md5sum] = "75dfad250d739efa82c7c0eeaacc5e68"
-SRC_URI[sha256sum] = "4ca62001be367f01bd3e92ecbb79070272a9d4964dce6a48a82ff0b8bc7e683a"
+SRC_URI[md5sum] = "29733ea8cbee0291aad121c69c6e51a1"
+SRC_URI[sha256sum] = "4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.4.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.4.6.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.4.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.4.6.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyperf.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperf.inc
index 81837f3..2e6304b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyperf.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperf.inc
@@ -13,8 +13,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=78bc2e6e87c8c61272937b879e6dc2f8"
 
-SRC_URI[md5sum] = "d67fe5f447963da8873f3e9923f76de1"
-SRC_URI[sha256sum] = "8d0143a22a13ee10c997a648f30b82cdc40175d5a20b11055ae058a82e45d371"
+SRC_URI[md5sum] = "e30b67b62a4e30e4504352d0778c622c"
+SRC_URI[sha256sum] = "0d214aa65e085d3e4108a36152cb12f7cd0f4e7fda93b5134b43a9687c975786"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyperf_1.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyperf_1.7.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyperf_1.6.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pyperf_1.7.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
index a26d410..752d67e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=640061b8cee64b308a4d2f9f556c12f2"
 
-SRC_URI[md5sum] = "889344299c9182aff67d6e461cb7af29"
-SRC_URI[sha256sum] = "27abc3fef618a01bebb1f0d6d303d2816a99aa87a5968ebc32fe971be91eb1e6"
+SRC_URI[md5sum] = "71a8eb2ab5efb76512d9a69bd6477034"
+SRC_URI[sha256sum] = "6b571215b5a790f9b41f19f3531c53a45cf6bb8ef2988bc1ff9afb38270b25fa"
 
 SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch \
                    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_5.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_5.3.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pytest_5.2.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pytest_5.3.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
index e9ae85e..48ebf73 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
@@ -8,8 +8,8 @@
 PYPI_PACKAGE = "PyYAML"
 inherit pypi
 
-SRC_URI[md5sum] = "20f87ab421b0271dbf371dc5c1cddb5c"
-SRC_URI[sha256sum] = "01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4"
+SRC_URI[md5sum] = "d7e45e932d6e6649ac574a1ed77b4269"
+SRC_URI[sha256sum] = "c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c"
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-datetime \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_5.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_5.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_5.1.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_5.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc
index 5592eaf..1a8d390 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson.inc
@@ -4,8 +4,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c6338d7abd321c0b50a2a547e441c52e"
 
-SRC_URI[md5sum] = "744fa99aed207478f8fbf9dd9f04fad3"
-SRC_URI[sha256sum] = "b1f329139ba647a9548aa05fb95d046b4a677643070dc2afc05fa2e975d09ca5"
+SRC_URI[md5sum] = "8a5ed75c367b90fedc3d685742e2a1c7"
+SRC_URI[sha256sum] = "2b4b2b738b3b99819a17feaf118265d0753d5536049ea570b3c43b51c4701e81"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.17.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.16.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-simplejson_3.17.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus.inc
index 9e726b5..ab7b1bb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus.inc
@@ -21,7 +21,7 @@
 SRC_URI[sha256sum] = "c726c086f0dd93a0ac7a0176f383a12af91b6657b78a301e3f5b25d9f8d4d10b"
 
 do_compile_prepend() {
-    sed -e 's/@VERSION@/${PV}/g' setup.py.in > setup.py
+    sed -e 's/@VERSION@/${PV}/g' ${S}/setup.py.in > ${S}/setup.py
 }
 
 RDEPENDS_${PN} += "\
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-soupsieve.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-soupsieve.inc
new file mode 100644
index 0000000..ccb04f4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-soupsieve.inc
@@ -0,0 +1,12 @@
+SUMMARY = "CSS selector library for python-beautifulsoup4"
+HOMEPAGE = "https://github.com/facelessuser/soupsieve"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=5a6fd3b0c24fc5a041a3d1bbb22c81b5"
+
+SRC_URI[md5sum] = "43d8ea20c58494446aa65ba5cc6320fe"
+SRC_URI[sha256sum] = "605f89ad5fdbfefe30cdc293303665eff2d188865d4dbe4eb510bba1edfbfce3"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-soupsieve_1.9.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-soupsieve_1.9.4.bb
new file mode 100644
index 0000000..55a673e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-soupsieve_1.9.4.bb
@@ -0,0 +1,4 @@
+inherit setuptools
+require python-soupsieve.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-backports-functools-lru-cache"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc
index 0c191ae..3763a39 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy.inc
@@ -2,13 +2,13 @@
 application developers the full power and flexibility of SQL"
 HOMEPAGE = "http://www.sqlalchemy.org/"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b1c412c9d8d1ce018f7a9374407c22bb"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2f5eb030c48975d5294baf0f5d01af1c"
 
 PYPI_PACKAGE = "SQLAlchemy"
 inherit pypi
 
-SRC_URI[md5sum] = "03db1c8f8ae911977c0bf3950a4c9c21"
-SRC_URI[sha256sum] = "6b55ec379c11ad696f9371ce8e0de93c7f21134323f56a56a1b0d8fbef17013c"
+SRC_URI[md5sum] = "02a46be841903b60c52a83342d3ced8e"
+SRC_URI[sha256sum] = "bfb8f464a5000b567ac1d350b9090cf081180ec1ab4aa87e7bca12dab25320ec"
 
 RDEPENDS_${PN} += " \
     ${PYTHON_PN}-json \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.1.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.3.12.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.1.17.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_1.3.12.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
index 34f8846..d005a2a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
@@ -7,6 +7,11 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1743f12d8b8f5aec625c0569a058f0a6"
 
+# allow for common patches for python- and python3-twisted
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-twisted:"
+
+SRC_URI += "file://0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch"
+
 SRC_URI[sha256sum] = "7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d"
 SRC_URI[md5sum] = "f2d70f7a66ecdf54152310164cceadfe"
 
@@ -56,9 +61,9 @@
     ${PN}-zsh \
 "
 
-RDEPENDS_${PN}-core = "${PYTHON_PN}-core ${PYTHON_PN}-zopeinterface ${PYTHON_PN}-incremental ${PYTHON_PN}-constantly ${PYTHON_PN}-hyperlink ${PYTHON_PN}-automat"
+RDEPENDS_${PN}-core = "${PYTHON_PN}-core ${PYTHON_PN}-zopeinterface ${PYTHON_PN}-incremental ${PYTHON_PN}-constantly ${PYTHON_PN}-hyperlink ${PYTHON_PN}-automat ${PYTHON_PN}-pyserial"
 RDEPENDS_${PN}-test = "${PN}"
-RDEPENDS_${PN}-conch = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-conch = "${PN}-core ${PN}-protocols ${PYTHON_PN}-bcrypt ${PYTHON_PN}-cryptography ${PYTHON_PN}-pyasn1 ${PYTHON_PN}-pickle"
 RDEPENDS_${PN}-mail = "${PN}-core ${PN}-protocols"
 RDEPENDS_${PN}-names = "${PN}-core"
 RDEPENDS_${PN}-news = "${PN}-core ${PN}-protocols"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted/0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted/0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch
new file mode 100644
index 0000000..39fc7d4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted/0001-fix-MemoryReactor-import-in-test_runner-to-be-from-t.patch
@@ -0,0 +1,38 @@
+From 754f21282ad2775db8ff501d40bbc497faeb17ba Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <trevor.gamblin@windriver.com>
+Date: Tue, 17 Dec 2019 15:09:22 -0500
+Subject: [PATCH] fix MemoryReactor import in test_runner to be from
+ twisted.internet.testing
+
+Upstream-Status: Backport [https://github.com/twisted/twisted/commit/754f21282ad2775db8ff501d40bbc497faeb17ba]
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+---
+ src/twisted/application/newsfragments/9746.misc    | 1 +
+ src/twisted/application/runner/test/test_runner.py | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+ create mode 100644 src/twisted/application/newsfragments/9746.misc
+
+diff --git a/src/twisted/application/newsfragments/9746.misc b/src/twisted/application/newsfragments/9746.misc
+new file mode 100644
+index 000000000..8b1378917
+--- /dev/null
++++ b/src/twisted/application/newsfragments/9746.misc
+@@ -0,0 +1 @@
++
+diff --git a/src/twisted/application/runner/test/test_runner.py b/src/twisted/application/runner/test/test_runner.py
+index 9abc3449a..cce495b12 100644
+--- a/src/twisted/application/runner/test/test_runner.py
++++ b/src/twisted/application/runner/test/test_runner.py
+@@ -15,7 +15,7 @@ from twisted.logger import (
+     LogLevel, LogPublisher, LogBeginner,
+     FileLogObserver, FilteringLogObserver, LogLevelFilterPredicate,
+ )
+-from twisted.test.proto_helpers import MemoryReactor
++from twisted.internet.testing import MemoryReactor
+ 
+ from ...runner import _runner
+ from .._exit import ExitStatus
+-- 
+2.24.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc
index 8f05de8..018ddf4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-ujson.inc
@@ -13,3 +13,5 @@
     ${PYTHON_PN}-datetime \
     ${PYTHON_PN}-numbers \
     "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-waitress.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-waitress.inc
index 732c31d..a8d337f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-waitress.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-waitress.inc
@@ -6,5 +6,5 @@
 LICENSE = "ZPL-2.1"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=78ccb3640dc841e1baecb3e27a6966b2"
 
-SRC_URI[md5sum] = "d9132d313de0c5e0fec34ef9ede5442e"
-SRC_URI[sha256sum] = "278e09d6849acc1365404bbf7d790d0423b159802e850c726e8cd0a126a2dac7"
+SRC_URI[md5sum] = "e6b9f0406cb4e6fedcc3add96411786d"
+SRC_URI[sha256sum] = "f4118cbce75985fd60aeb4f0d781aba8dc7ae28c18e50753e913d7a7dee76b62"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-waitress_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-waitress_1.4.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-waitress_1.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-waitress_1.4.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
index 1ec3937..80f5e9c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
@@ -3,5 +3,5 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5a8d76283514a1b7e6a414aba38629b5"
 
-SRC_URI[md5sum] = "80461eff10ac62214fa788a6045aab43"
-SRC_URI[sha256sum] = "82cdc67b41da904aa2921107e9877814079d9b067a99f19852b5d85e8a40555d"
+SRC_URI[md5sum] = "ce9cbbcc89620fd47a2468badd08dcf0"
+SRC_URI[sha256sum] = "8b6b1afe7731d7d9cbb0398b4a811ebb5e6be5c174f72c68abf81f919a435de9"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.3.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.3.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.3.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.2.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.3.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor/f820f3ff7ad8818475b6e107e63aa9a54252d2a9.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor/f820f3ff7ad8818475b6e107e63aa9a54252d2a9.patch
deleted file mode 100644
index 8236993..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor/f820f3ff7ad8818475b6e107e63aa9a54252d2a9.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From f820f3ff7ad8818475b6e107e63aa9a54252d2a9 Mon Sep 17 00:00:00 2001
-From: Jonathan Ringer <jonringer117@gmail.com>
-Date: Thu, 17 Oct 2019 16:54:16 -0700
-Subject: [PATCH] Fix packaging for setuptools>=41.4
-
----
- astor/VERSION     |  1 +
- astor/__init__.py |  5 ++++-
- setup.cfg         |  3 ++-
- setup.py          | 16 +---------------
- 4 files changed, 8 insertions(+), 17 deletions(-)
- create mode 100644 astor/VERSION
-
-diff --git a/astor/VERSION b/astor/VERSION
-new file mode 100644
-index 0000000..a3df0a6
---- /dev/null
-+++ b/astor/VERSION
-@@ -0,0 +1 @@
-+0.8.0
-diff --git a/astor/__init__.py b/astor/__init__.py
-index 3b02983..8dfcdb1 100644
---- a/astor/__init__.py
-+++ b/astor/__init__.py
-@@ -9,6 +9,7 @@
- 
- """
- 
-+import os
- import warnings
- 
- from .code_gen import SourceGenerator, to_source  # NOQA
-@@ -19,7 +20,9 @@
- from .op_util import symbol_data  # NOQA
- from .tree_walk import TreeWalk  # NOQA
- 
--__version__ = '0.8.0'
-+ROOT = os.path.dirname(__file__)
-+with open(os.path.join(ROOT, 'VERSION')) as version_file:
-+    __version__ = version_file.read().strip
- 
- parse_file = code_to_ast.parse_file
- 
-diff --git a/setup.cfg b/setup.cfg
-index 1baf6fc..a43634f 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -2,6 +2,7 @@
- name = astor
- description = Read/rewrite/write Python ASTs
- long_description = file:README.rst
-+version = file: astor/VERSION
- author = Patrick Maupin
- author_email = pmaupin@gmail.com
- platforms = Independent
-@@ -40,7 +41,7 @@ test_suite = nose.collector
- [options.packages.find]
- exclude = tests
- 
--[wheel]
-+[bdist_wheel]
- universal = 1
- 
- [build-system]
-diff --git a/setup.py b/setup.py
-index 4a111b5..6068493 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1,17 +1,3 @@
--import os
--import sys
--
- from setuptools import setup
--from setuptools.config import read_configuration
--
--from setuputils import find_version
--
--
--def here(*paths):
--    return os.path.join(os.path.dirname(__file__), *paths)
--
--config = read_configuration(here('setup.cfg'))
--config['metadata']['version'] = find_version(here('astor', '__init__.py'))
--config['options'].update(config['metadata'])
- 
--setup(**config['options'])
-+setup()
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
similarity index 62%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
index 17cc540..125a023 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
@@ -4,10 +4,8 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=561205fdabc3ec52cae2d30815b8ade7"
 
-SRC_URI = "git://github.com/berkerpeksag/astor.git \
-           file://f820f3ff7ad8818475b6e107e63aa9a54252d2a9.patch \
-          "
-SRCREV ?= "3a7607e31f0c17e747ded5cfe0b582d99f7caecf"
+SRC_URI = "git://github.com/berkerpeksag/astor.git "
+SRCREV ?= "c7553c79f9222e20783fe9bd8a553f932e918072"
 
 inherit setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.5.bb
new file mode 100644
index 0000000..91fcc41
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.5.bb
@@ -0,0 +1,2 @@
+require python-backports-functools-lru-cache.inc
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.6.2.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.5.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.6.2.bb
index 3002d5a..fa28861 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.5.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.6.2.bb
@@ -2,8 +2,8 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
 
-SRC_URI[md5sum] = "81ba3979ded1b421fa8d69e6faa06dcb"
-SRC_URI[sha256sum] = "9413facfe9de1e1bd291d525c784e1beb1a55c9916b51dae12979af63a69ba4c"
+SRC_URI[md5sum] = "c6a6772d7afa0af8828b3384e73b7085"
+SRC_URI[sha256sum] = "41e75315853507aa145d62a78a2a6c5e3240fe14ee7c601459d0df9418196065"
 
 DEPENDS = "python3-pbr-native python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-beautifulsoup4_4.8.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.2.1.b
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.2.1.b
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-booleanpy_3.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-booleanpy_3.7.bb
new file mode 100644
index 0000000..5f8602d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-booleanpy_3.7.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-booleanpy.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.0.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_3.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.0.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.9.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.11.28.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.9.11.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2019.11.28.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.22.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.19.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_0.9.22.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.11.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.10.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_3.11.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2019.8.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2019.8.11.bb
new file mode 100644
index 0000000..9cb5b01
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2019.8.11.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-html2text.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.1.2.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.0.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.1.2.bb
index bf9eb0a..e23720c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.0.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.1.2.bb
@@ -3,8 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c89120516900f96f4c60d35fdc4c3f15"
 
-SRC_URI[md5sum] = "d41e9f6b310cb29b0d8f213ff9d57567"
-SRC_URI[sha256sum] = "240c517f49b0fdd3bfa428c9a7cc581126a0c43eca60d29762da124017d9d9f4"
+SRC_URI[md5sum] = "fd4091bc19eb18579c15b97af70714eb"
+SRC_URI[sha256sum] = "73db55d1cf245ebdfb96ca05c4cce01c51b61be845a2a981f539ea1e6a4e0c4a"
 
 inherit pypi setuptools3
 
@@ -20,4 +20,5 @@
     python3-typing \
 "
 
-BBCLASSEXTEND = "native nativesdk"
\ No newline at end of file
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.2.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.2.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.0.bb
new file mode 100644
index 0000000..10a702c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-license-expression.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.4.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.4.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.12.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.14.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.12.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.14.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.7.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.7.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pexpect_4.7.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.13.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.6.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.6.7.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.6.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.6.7.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-py_1.8.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.9.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.9.4.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.9.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pycryptodome_3.9.4.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.117.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.119.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.117.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.119.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.10.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.9.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.10.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.1.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_19.1.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.6.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyparsing_2.4.6.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.7.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.6.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_1.7.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.7.0.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.7.0.bb
index 02a5c8f..66f026c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.7.0.bb
@@ -2,8 +2,8 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c"
 
-SRC_URI[md5sum] = "c5472be419f53f53f5da089ca8c981c0"
-SRC_URI[sha256sum] = "b1fc072c87e3766711f64caf86fd633dca393e20c8a0a37a5058dd70a21d8a14"
+SRC_URI[md5sum] = "f493c3e54457e49fe3c160274b863bac"
+SRC_URI[sha256sum] = "f5dc49d02995ab96335d9e94f9fe036673d89b8cc9907e7a0ac83c06665f2430"
 
 DEPENDS = "systemd"
 REQUIRED_DISTRO_FEATURES = "systemd"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.3.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.2.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.3.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.1.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.17.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.16.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-simplejson_3.17.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_1.9.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_1.9.4.bb
new file mode 100644
index 0000000..1b96636
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_1.9.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-soupsieve.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.1.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.3.12.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.1.17.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.3.12.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.4.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_1.4.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict_0.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict_0.12.0.bb
new file mode 100644
index 0000000..00aa818
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmltodict_0.12.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Makes working with XML feel like you are working with JSON"
+AUTHOR = "Martin Blech"
+HOMEPAGE = "https://github.com/martinblech/xmltodict"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=01441d50dc74476db58a41ac10cb9fa2"
+
+SRC_URI[md5sum] = "ddb2bd078cef4f7e3021a578034ad941"
+SRC_URI[sha256sum] = "50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"
+
+PYPI_PACKAGE = "xmltodict"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.3.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.3.bb
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem.inc b/meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem.inc
index 5151c33..98508b0 100644
--- a/meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem.inc
+++ b/meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem.inc
@@ -14,12 +14,15 @@
 way to write providers on the planet."
 HOMEPAGE = "http://pywbem.github.io"
 LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://pywbem/LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
-SRC_URI[md5sum] = "1465dfa92e4cbe558c773838b9b00711"
-SRC_URI[sha256sum] = "2a05f2c1a6ab4b08560a6da55fdaabd0f52f4d1e6df6e288b9ed927bf5c289ed"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
 
 inherit pypi 
 
+SRCREV = "b3386b3bee8876d15f0745147c0b08937d8ab18e"
+PYPI_SRC_URI = "git://github.com/pywbem/pywbem;protocol=https;branch=stable_0.15"
+
+S = "${WORKDIR}/git"
+
 DEPENDS += " \
     ${PYTHON_PN}-ply-native \
     ${PYTHON_PN}-pyyaml-native \
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem_0.11.0.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem_0.15.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem_0.11.0.bb
rename to meta-openembedded/meta-python/recipes-extended/pywbem/python-pywbem_0.15.0.bb
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_0.11.0.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_0.15.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_0.11.0.bb
rename to meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_0.15.0.bb
diff --git a/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.9.1.bb b/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.9.2.bb
similarity index 90%
rename from meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.9.1.bb
rename to meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.9.2.bb
index 3da2d9b..34943de 100644
--- a/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.9.1.bb
+++ b/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.9.2.bb
@@ -11,8 +11,8 @@
            file://apache.conf \
 "
 
-SRC_URI[md5sum] = "a165109629731f5311ec3171cce50972"
-SRC_URI[sha256sum] = "8f89dd62e3fdddabca187b092eeb5af4a4fb956189564c56038970519d0496c5"
+SRC_URI[md5sum] = "5b5d1d84a05624430ac659e36af00f4e"
+SRC_URI[sha256sum] = "3bc3e37fefbdfcaf12fd59d6d7fdbf11ffcffe3e211155bf5b822b54a3c2043e"
 
 UPSTREAM_CHECK_URI = "https://www.phpmyadmin.net/downloads/"
 UPSTREAM_CHECK_REGEX = "phpMyAdmin-(?P<pver>\d+(\.\d+)+)-all-languages.tar.xz"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_1.4.10.bb b/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_1.4.11.bb
similarity index 72%
rename from meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_1.4.10.bb
rename to meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_1.4.11.bb
index 602368b..4152e15 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_1.4.10.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_1.4.11.bb
@@ -9,8 +9,8 @@
 
 B = "${S}"
 
-SRC_URI[md5sum] = "1b8e7bfd955364b7912fb0a248329b3a"
-SRC_URI[sha256sum] = "2573a004105031f871c92fed22a0c4b15bb96f2dff6e36c4f2959f56b62e343d"
+SRC_URI[md5sum] = "67e23d45fded026ef3445bc7fe1d1653"
+SRC_URI[sha256sum] = "617baf9309e3cdfb20c8357ac786eb26f30e6fd4280d4534d3cdd742c7ffcd85"
 
 FILES_${PN} += "${datadir}/metainfo"
 
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.8.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.9.bb
similarity index 73%
rename from meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.8.bb
rename to meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.9.bb
index 467e095..9c9ae94 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.8.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.9.bb
@@ -9,9 +9,9 @@
 
 DEPENDS += "intltool-native"
 
-SRC_URI = "http://archive.xfce.org/src/apps/${BPN}/1.0/${BPN}-${PV}.tar.bz2"
-SRC_URI[md5sum] = "bc75a143423fba3a82f114f47e86580c"
-SRC_URI[sha256sum] = "a69e20f5e637319e14898b5c13ff7ba31d001a6e38e7516d70dbfd7600ad72db"
+SRC_URI = "http://archive.xfce.org/src/apps/${BPN}/1.0/${BP}.tar.bz2"
+SRC_URI[md5sum] = "bee3e251e45ade0ea349366461d6e200"
+SRC_URI[sha256sum] = "a8c00af838e85d00600dbf442c8741aa21a332fbceba849e0820560630a6e0ce"
 
 do_configure() {
     # special configure - no autotools...
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.8.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.9.1.bb
similarity index 70%
rename from meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.8.bb
rename to meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.9.1.bb
index ebc046b..4bdd4cb 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.8.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.9.1.bb
@@ -8,7 +8,7 @@
 FILES_${PN} += "${datadir}/xfce4 \
                 ${datadir}/gnome-control-center"
 
-SRC_URI[md5sum] = "4295d4d783f6d6dfe92f5bb15d96f6c6"
-SRC_URI[sha256sum] = "8fba6a60d3a0fee07417ad7c36bf78cc45be1b27f0759e125051aa73f08487fd"
+SRC_URI[md5sum] = "cb995e4891a3c547bf133b31e4840d01"
+SRC_URI[sha256sum] = "0deb0d06e50a8a41fb00e2c3773f0793882cb9f073ae16ead887bb9681c514cd"
 
 RRECOMMENDS_${PN} += "vte-prompt"
diff --git a/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb b/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
index b05c748..89dab49 100644
--- a/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
@@ -4,7 +4,7 @@
 
 inherit allarch
 
-SRC_URI = "http://xfce-look.org/CONTENT/content-files/141404-xfce_dusk_gtk3-1_3.tar.gz;subdir=${BPN}-${PV}"
+SRC_URI = "http://sources.openembedded.org/141404-xfce_dusk_gtk3-1_3.tar.gz;subdir=${BPN}-${PV}"
 SRC_URI[md5sum] = "b3ad37ad8173b14ec090e60a80e65d8f"
 SRC_URI[sha256sum] = "bfa8a88607d1a1da5bd0b9e4e075767c54400a3c5a0fae88b619ed71532f30b4"
 
diff --git a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0001-Add-G_GNUC_PRINTF-on-functions-with-format-strings.patch b/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0001-Add-G_GNUC_PRINTF-on-functions-with-format-strings.patch
deleted file mode 100644
index 03cb762..0000000
--- a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0001-Add-G_GNUC_PRINTF-on-functions-with-format-strings.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From fcf29abe59607b5791f9de18ddb86b9ae3c9b7cc Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 26 Aug 2017 23:50:05 -0700
-Subject: [PATCH] Add G_GNUC_PRINTF on functions with format strings
-
-This allows compilation with clang without errors, even when
--Wformat-nonliteral is active (as long as there are no real cases of
-non literal formatting).
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gladeui/glade-command.c | 4 ++--
- gladeui/glade-utils.c   | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/gladeui/glade-command.c b/gladeui/glade-command.c
-index 9819766..4ac40ee 100644
---- a/gladeui/glade-command.c
-+++ b/gladeui/glade-command.c
-@@ -266,7 +266,7 @@ glade_command_collapse (GladeCommand  *command,
-  *
-  * Marks the begining of a group.
-  */
--void
-+G_GNUC_PRINTF(1, 2) void
- glade_command_push_group (const gchar *fmt, ...)
- {
- 	va_list         args;
-@@ -655,7 +655,7 @@ glade_command_set_properties_list (GladeProject *project, GList *props)
- 
- 	multiple = g_list_length (me->sdata) > 1;
- 	if (multiple)
--		glade_command_push_group (cmd->description);
-+		glade_command_push_group ("%s", cmd->description);
- 
- 
- 	glade_command_check_group (GLADE_COMMAND (me));
-diff --git a/gladeui/glade-utils.c b/gladeui/glade-utils.c
-index ae52501..c51ae59 100644
---- a/gladeui/glade-utils.c
-+++ b/gladeui/glade-utils.c
-@@ -197,7 +197,7 @@ glade_utils_get_pspec_from_funcname (const gchar *funcname)
-  *          selected "OK", True if the @type was GLADE_UI_YES_OR_NO and
-  *          the user selected "YES"; False otherwise.
-  */
--gint
-+G_GNUC_PRINTF(4, 5) gint
- glade_util_ui_message (GtkWidget           *parent, 
- 		       GladeUIMessageType   type,
- 		       GtkWidget           *widget,
-@@ -320,7 +320,7 @@ remove_message_timeout (FlashInfo * fi)
-  *
-  * Flash a temporary message on the statusbar.
-  */
--void
-+G_GNUC_PRINTF(3, 4) void
- glade_util_flash_message (GtkWidget *statusbar, guint context_id, gchar *format, ...)
- {
- 	va_list args;
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0001-gnome-doc-utils.make-sysrooted-pkg-config.patch b/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0001-gnome-doc-utils.make-sysrooted-pkg-config.patch
deleted file mode 100644
index 1b24c39..0000000
--- a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0001-gnome-doc-utils.make-sysrooted-pkg-config.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From aed002cd9ff9e8f972120fbac33b4a65aba952e1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Tue, 25 Sep 2012 10:28:33 +0200
-Subject: [PATCH] gnome-doc-utils.make: sysrooted pkg-config
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-same approach as used used in gnome-disk-utility:
-
-In cross environment we have to prepend the sysroot to the path found by
-pkgconfig since the path returned from pkgconfig does not have sysroot prefixed
-it ends up using the files from host system. Now usually people have gnome installed
-so the build succeeds but if you dont have gnome installed on build host then
-it wont find the files on host system and packages using gnome-doc-utils wont
-compile.
-
-This should work ok with non sysrooted builds too since in those cases PKG_CONFIG_SYSROOT_DIR
-will be empty
-
-Upstream-Status: pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- gnome-doc-utils.make |   10 +++++-----
- 1 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/gnome-doc-utils.make b/gnome-doc-utils.make
-index 42d9df3..f71bbfa 100644
---- a/gnome-doc-utils.make
-+++ b/gnome-doc-utils.make
-@@ -133,11 +133,11 @@ _DOC_ABS_SRCDIR = @abs_srcdir@
- _xml2po ?= `which xml2po`
- _xml2po_mode = $(if $(DOC_ID),mallard,docbook)
- 
--_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
--_db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
--_chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
--_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
--_ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
-+_db2html ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2html gnome-doc-utils`
-+_db2omf  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
-+_chunks  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
-+_credits ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
-+_ids ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
- 
- if ENABLE_SK
- _ENABLE_SK = true
--- 
-1.7.6.5
-
diff --git a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0002-fix-gcc-6-build.patch b/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0002-fix-gcc-6-build.patch
deleted file mode 100644
index f735ff8..0000000
--- a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3/0002-fix-gcc-6-build.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 5aa3d2abb905fa8594f6c6572a87809da54c9342 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Mon, 5 Sep 2016 11:25:27 +0200
-Subject: [PATCH] fix gcc-6 build
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- gladeui/glade-editor-property.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/gladeui/glade-editor-property.c b/gladeui/glade-editor-property.c
-index a0c1039..5e9ac38 100644
---- a/gladeui/glade-editor-property.c
-+++ b/gladeui/glade-editor-property.c
-@@ -2703,6 +2703,8 @@ glade_eprop_object_view (gboolean             radio)
- }
- 
- 
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
- static gchar *
- glade_eprop_object_dialog_title (GladeEditorProperty *eprop)
- {
-@@ -2731,6 +2733,7 @@ glade_eprop_object_dialog_title (GladeEditorProperty *eprop)
- 	return g_strdup_printf (format, g_type_name 
- 				(eprop->klass->pspec->value_type));
- }
-+#pragma GCC diagnostic pop
- 
- 
- gboolean
--- 
-2.5.5
-
diff --git a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3_3.8.5.bb b/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3_3.8.5.bb
deleted file mode 100644
index 24d0d90..0000000
--- a/meta-openembedded/meta-xfce/recipes-devtools/glade/glade3_3.8.5.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Glade - A User Interface Designer"
-HOMEPAGE = "http://www.gnu.org/software/gnash"
-LICENSE = "GPLv2 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=aabe87591cb8ae0f3c68be6977bb5522 \
-                    file://COPYING.GPL;md5=9ac2e7cff1ddaf48b6eab6028f23ef88 \
-                    file://COPYING.LGPL;md5=252890d9eee26aab7b432e8b8a616475"
-DEPENDS = "gtk+ gnome-doc-utils gnome-common libxml2 intltool-native"
-
-inherit features_check autotools pkgconfig pythonnative gtk-icon-cache
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glade3/3.8/glade3-${PV}.tar.xz \
-           file://0001-gnome-doc-utils.make-sysrooted-pkg-config.patch \
-           file://0002-fix-gcc-6-build.patch \
-           file://0001-Add-G_GNUC_PRINTF-on-functions-with-format-strings.patch \
-           "
-SRC_URI[md5sum] = "4e4b4f5ee34a03e017e4cef97d796c1f"
-SRC_URI[sha256sum] = "58a5f6e4df4028230ddecc74c564808b7ec4471b1925058e29304f778b6b2735"
-
-EXTRA_OECONF += "--disable-scrollkeeper"
-
-FILES_${PN} += "${datadir}/icons"
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/kbdleds/xfce4-kbdleds-plugin_0.0.6.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/kbdleds/xfce4-kbdleds-plugin_0.0.6.bb
deleted file mode 100644
index caf5508..0000000
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/kbdleds/xfce4-kbdleds-plugin_0.0.6.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "XFCE panel plugin displaying status of keyboard LEDs"
-DESCRIPTION = "This plugin shows the state of your keyboard LEDs: Caps, Scroll and Num Lock in Xfce panel"
-HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-kbdleds-plugin"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-    file://COPYING.LIB;md5=252890d9eee26aab7b432e8b8a616475 \
-"
-
-inherit xfce-panel-plugin
-
-SRC_URI[md5sum] = "db6ad8e3502f3373f087ba2034141552"
-SRC_URI[sha256sum] = "6d280ad7207bcb9cc87c279dc3ab9084fd93325e87f67858e8917729b50201cd"
-
-FILES_${PN} += "${libdir}/xfce4/panel-plugins/xfce4-kbdleds-plugin"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.12.9.bb b/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.12.11.bb
similarity index 83%
rename from meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.12.9.bb
rename to meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.12.11.bb
index 8d59be1..4c16689 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.12.9.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.12.11.bb
@@ -5,7 +5,7 @@
 DEPENDS = "gtk+3 libxfce4ui virtual/libx11 liburi-perl-native cairo"
 DEPENDS_class-native = "glib-2.0-native xfce4-dev-tools-native intltool-native"
 
-inherit xfce pythonnative perlnative gtk-doc features_check
+inherit xfce perlnative gtk-doc features_check
 
 REQUIRED_DISTRO_FEATURES = "x11"
 REQUIRED_DISTRO_FEATURES_class-native = ""
@@ -20,8 +20,8 @@
     file://reduce-build-to-exo-csource-only.patch \
 "
 
-SRC_URI[md5sum] = "9730f9d270b4968a8bbebe73e6de934f"
-SRC_URI[sha256sum] = "9ba0bf0fd59aeb1cd32ae3863e7a78222655eb15eb675ba08f3b3fb933b6fbfe"
+SRC_URI[md5sum] = "efeb039d64b3257e39a1a38e75eb19b1"
+SRC_URI[sha256sum] = "ec892519c08a67f3e0a1f0f8d43446e26871183e5aa6be7f82e214f388d1e5b6"
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG_class-target ??= "gtk"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine/glib-2.54-ftbfs.patch b/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine/glib-2.54-ftbfs.patch
deleted file mode 100644
index fb89102..0000000
--- a/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine/glib-2.54-ftbfs.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Description: Fix FTBFS with glib 2.54
- glib-mkenums now expects input files to be UTF-8,
- fix the encoding of libgnomeui/gnome-scores.h
-Author: Adrian Bunk <bunk@debian.org>
-
-ported from: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870738
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: gtk-xfce-engine-3.2.0/gtk-3.0/xfce_style_types.h
-===================================================================
---- gtk-xfce-engine-3.2.0.orig/gtk-3.0/xfce_style_types.h
-+++ gtk-xfce-engine-3.2.0/gtk-3.0/xfce_style_types.h
-@@ -19,7 +19,7 @@
-  *
-  *  Portions based Thinice port by 
-  *                       Tim Gerla <timg@rrv.net>,
-- *                       Tomas Ögren <stric@ing.umu.se,
-+ *                       Tomas Ögren <stric@ing.umu.se>,
-  *                       Richard Hult <rhult@codefactory.se>
-  *  Portions based on Smooth theme by
-  *                       Andrew Johnson <ajgenius@ajgenius.us>
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine_3.2.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine_3.2.0.bb
deleted file mode 100644
index 0dd4a4c..0000000
--- a/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine_3.2.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "XFCE theme for GTK"
-SECTION = "x11/libs"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "gtk+ xfce4-dev-tools-native"
-
-inherit xfce features_check
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI += "file://glib-2.54-ftbfs.patch"
-
-SRC_URI[md5sum] = "363d6c16a48a00e26d45c45c2e1fd739"
-SRC_URI[sha256sum] = "875c9c3bda96faf050a2224649cc42129ffb662c4de33add8c0fd1fb860b47ed"
-
-PACKAGECONFIG ??= "gtk3"
-PACKAGECONFIG[gtk3] = "--enable-gtk3,--disable-gtk3, gtk+3, gtk3-xfce-engine"
-
-PACKAGES += "${PN}-themes gtk3-xfce-engine"
-FILES_${PN} += "${libdir}/gtk-2.0/*/engines/*.so"
-FILES_gtk3-xfce-engine += "${libdir}/gtk-3.0/*/theming-engines/*.so"
-FILES_${PN}-themes += "${datadir}/themes"
-
-FILES_${PN}-dev += " \
-    ${libdir}/gtk-2.0/*/engines/*.la \
-    ${libdir}/gtk-3.0/*/theming-engines/*.la \
-"
-
-RDEPENDS_${PN} += "${PN}-themes"
-RDEPENDS_gtk3-xfce-engine += "${PN}-themes"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.14.1.bb b/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.14.1.bb
index 053eb20..348b685 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.14.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.14.1.bb
@@ -17,7 +17,6 @@
 EXTRA_OECONF += "--with-vendor-info=${DISTRO}"
 
 PACKAGECONFIG ??= ""
-PACKAGECONFIG[gladeui] = "--enable-gladeui,--disable-gladeui,glade3"
 PACKAGECONFIG[gladeui2] = "--enable-gladeui2,--disable-gladeui2,glade"
 PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
 
@@ -28,9 +27,7 @@
 PACKAGES += "${PN}-glade"
 FILES_${PN}-glade = " \
     ${libdir}/glade \
-    ${libdir}/glade3 \
     ${datadir}/glade \
-    ${datadir}/glade3 \
 "
 
 RDEPENDS_${PN}-gtk2 = "${PN}"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
index 412c6ae..70ef909 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
@@ -13,7 +13,6 @@
     xfdesktop \
     xfce4-panel \
     \
-    gtk-xfce-engine \
     librsvg-gtk \
     \
     xfce4-panel-plugin-actions \
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
index 42f20c9..255d2b5 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
@@ -45,7 +45,6 @@
     xfce4-notes-plugin \
     xfce4-whiskermenu-plugin \
     xfce4-mailwatch-plugin \
-    xfce4-kbdleds-plugin \
     xfce4-smartbookmark-plugin \
     xfce4-hotcorner-plugin \
     ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'xfce4-pulseaudio-plugin', '', d)} \
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.8.9.bb b/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.8.10.bb
similarity index 74%
rename from meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.8.9.bb
rename to meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.8.10.bb
index bc996c1..f2376aa 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.8.9.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.8.10.bb
@@ -8,11 +8,8 @@
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI = "http://archive.xfce.org/src/xfce/${BPN}/${@'${PV}'[0:3]}/Thunar-${PV}.tar.bz2"
-SRC_URI[md5sum] = "fd1166e879294e4490d5fa9dccfdd9da"
-SRC_URI[sha256sum] = "7a758e7ac03501c520c304f8845353315c954d429b17d591b8eea8b14f1350b9"
-
-S = "${WORKDIR}/Thunar-${PV}/"
+SRC_URI[md5sum] = "85c7394d82542d5a023f1f5baef109d8"
+SRC_URI[sha256sum] = "3d448d81c0e49efbaa5ae6bf34ac3c88a614178a1127afaee6b3a1b5ee12e709"
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[pcre] = "--enable-pcre,--disable-pcre,libpcre"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.2.7.bb b/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.2.8.bb
similarity index 87%
rename from meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.2.7.bb
rename to meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.2.8.bb
index 434f874..e0d4845 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.2.7.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.2.8.bb
@@ -6,8 +6,8 @@
 
 inherit xfce gtk-doc
 
-SRC_URI[md5sum] = "a59b2a545c9c128dbd2b960a7779dec0"
-SRC_URI[sha256sum] = "f704c35f16716cbee3c94883cee2a8d865e9cf2535d0e84f57e1c8cce00314e4"
+SRC_URI[md5sum] = "5d541608b3962fd2b16e23a266fd7a10"
+SRC_URI[sha256sum] = "0999b9a3deb57010956db6630ae7205813999147043171049a7b6c333be93e96"
 
 INSANE_SKIP_${PN} = "dev-so"