diff options
Diffstat (limited to 'meta-openembedded')
351 files changed, 10650 insertions, 3370 deletions
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/packageconfigs/packagegroup-meta-filesystems.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/packageconfigs/packagegroup-meta-filesystems.bb index 86b1c9b36..8a8a8dbe2 100644 --- a/meta-openembedded/meta-filesystems/recipes-filesystems/packageconfigs/packagegroup-meta-filesystems.bb +++ b/meta-openembedded/meta-filesystems/recipes-filesystems/packageconfigs/packagegroup-meta-filesystems.bb @@ -16,20 +16,36 @@ RDEPENDS_packagegroup-meta-filesystems = "\ " RDEPENDS_packagegroup-meta-filesystems = "\ - ntfs-3g-ntfsprogs ifuse sshfs-fuse \ - logfsprogs owfs simple-mtpfs \ - unionfs-fuse fuse-exfat yaffs2-utils \ + ifuse \ + logfsprogs \ + fuse-exfat \ + owfs \ ${@bb.utils.contains("DISTRO_FEATURES", "pam", "smbnetfs", "", d)} \ - " + simple-mtpfs \ + yaffs2-utils \ + ntfs-3g-ntfsprogs \ + httpfs2 \ + unionfs-fuse \ + sshfs-fuse \ +" RDEPENDS_packagegroup-meta-filesystems-support = "\ - physfs fuse \ - " + fuse3 \ + fuse \ + physfs \ +" RDEPENDS_packagegroup-meta-filesystems-utils = "\ - xorriso aufs-util xfsprogs \ - f2fs-tools exfat-utils udevil \ + aufs-util \ + exfat-utils \ + fatcat \ xfsdump \ - " + f2fs-tools \ + fatresize \ + udevil \ + ufs-utils \ + xfsprogs \ + xorriso \ +" EXCLUDE_FROM_WORLD = "1" diff --git a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.2.bb b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.3.bb index 357a1de1d..8ef9ee12c 100644 --- a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.2.bb +++ b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.9.3.bb @@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = "file://GPL2.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ SRC_URI = "https://github.com/libfuse/libfuse/releases/download/fuse-${PV}/fuse-${PV}.tar.xz \ " -SRC_URI[sha256sum] = "6999b6d48e7c0a79628fa901f6e66def3513cab4ffdd8097821e7dc3cdeae08a" +SRC_URI[sha256sum] = "cd45270a064d2ae14f17cfc914f1555106d6c5091025b0b2698b860399d4ede6" S = "${WORKDIR}/fuse-${PV}" diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.7.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.8.0.bb index 9efcc5617..b02ec6f97 100644 --- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.7.0.bb +++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.8.0.bb @@ -12,7 +12,7 @@ SRC_URI = "https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/${BP}.tar.xz \ file://0002-include-include-xfs-linux.h-after-sys-mman.h.patch \ file://0001-support-usrmerge.patch \ " -SRC_URI[sha256sum] = "8f2348a68a686a3f4491dda5d62dd32d885fbc52d32875edd41e2c296e7b4f35" +SRC_URI[sha256sum] = "8ef46ed9e6bb927f407f541dc4324857c908ddf1374265edc910d23724048c6b" inherit autotools-brokensep PACKAGES =+ "${PN}-fsck ${PN}-mkfs ${PN}-repair libhandle" diff --git a/meta-openembedded/meta-gnome/conf/layer.conf b/meta-openembedded/meta-gnome/conf/layer.conf index 7aa9507eb..7706b7ca6 100644 --- a/meta-openembedded/meta-gnome/conf/layer.conf +++ b/meta-openembedded/meta-gnome/conf/layer.conf @@ -18,3 +18,9 @@ LAYERVERSION_gnome-layer = "1" LAYERDEPENDS_gnome-layer = "core openembedded-layer networking-layer" LAYERSERIES_COMPAT_gnome-layer = "thud warrior zeus dunfell" + +SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\ + faenza-icon-theme->gdk-pixbuf \ + faenza-icon-theme->gtk+3 \ +" + diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.36.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.36.2.bb index 75f1737c6..afd9146ac 100644 --- a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.36.2.bb +++ b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_3.36.2.bb @@ -36,3 +36,4 @@ FILES_${PN}-python += " \ ${PYTHON_SITEPACKAGES_DIR} \ " +RRECOMMENDS_${PN} += "source-code-pro-fonts" diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb index ec0ac2b29..ad5dab5ec 100644 --- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb +++ b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb @@ -62,7 +62,7 @@ PACKAGECONFIG[samba] = "-Dsmb=true, -Dsmb=false, samba" PACKAGECONFIG[systemd] = "-Dsystemduserunitdir=${systemd_user_unitdir} -Dtmpfilesdir=${libdir}/tmpfiles.d, -Dsystemduserunitdir=no -Dtmpfilesdir=no, systemd" # needs meta-filesystems -PACKAGECONFIG[fuse] = "-Dfuse=true, -Dfuse=false, fuse" +PACKAGECONFIG[fuse] = "-Dfuse=true, -Dfuse=false, fuse3" # libcdio-paranoia recipe doesn't exist yet PACKAGECONFIG[cdda] = "-Dcdda=true, -Dcdda=false, libcdio-paranoia" diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb index 29b9fc62f..a3e479869 100644 --- a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb +++ b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb @@ -52,6 +52,7 @@ PACKAGECONFIG[native-backend] = "-Dnative_backend=true -Dudev=true, -Dnative_bac PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=true, virtual/libgl" PACKAGECONFIG[glx] = "-Dglx=true, -Dglx=false" PACKAGECONFIG[libwacom] = "-Dlibwacom=true, -Dlibwacom=false, libwacom" +# Remove depending on pipewire-0.2 when mutter is upgraded to 3.36+ PACKAGECONFIG[remote-desktop] = "-Dremote_desktop=true, -Dremote_desktop=false, pipewire-0.2" PACKAGECONFIG[sm] = "-Dsm=true, -Dsm=false, libsm" PACKAGECONFIG[profiler] = "-Dprofiler=true,-Dprofiler=false,sysprof" diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb index c66c93ec5..5505626d3 100644 --- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb +++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb @@ -12,15 +12,20 @@ SRC_URI = " \ git://linuxtv.org/libcamera.git;protocol=git \ " -SRCREV = "5f2f9406cebc668f0d69007d1ea59ef3c56ef28c" +SRCREV = "1e8c91b65695449c5246d17ba7dc439c8058b781" -PV = "202006+git${SRCPV}" +PV = "202008+git${SRCPV}" S = "${WORKDIR}/git" DEPENDS = "python3-pyyaml-native udev gnutls boost chrpath-native" DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'qt', 'qtbase qtbase-native', '', d)}" +PACKAGES =+ "${PN}-gst" + +PACKAGECONFIG ??= "" +PACKAGECONFIG[gst] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0 gstreamer1.0-plugins-base" + RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland qt', 'qtwayland', '', d)}" inherit meson pkgconfig python3native @@ -44,4 +49,4 @@ do_recalculate_ipa_signatures_package() { FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig" FILES_${PN} += " ${libdir}/libcamera.so" - +FILES_${PN}-gst = "${libdir}/gstreamer-1.0/libgstlibcamera.so" 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 62d1ad7f7..2db30dda0 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 @@ -84,4 +84,7 @@ RDEPENDS_${PN} += "flac mpg123" # Mycroft can do this itself on the target, but it's quicker to do it here RDEPENDS_${PN} += "mimic" +# pgrep is used by stop-mycroft.sh +RDEPENDS_${PN} += "procps" + SYSTEMD_SERVICE_${PN} = "mycroft-setup.service mycroft.service" diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb index e0cb415e3..2bf8877bb 100644 --- a/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb +++ b/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb @@ -20,33 +20,87 @@ RDEPENDS_packagegroup-meta-multimedia = "\ " RDEPENDS_packagegroup-meta-multimedia = "\ - libdvbpsi libdc1394 gstd gst-shark \ - bigbuckbunny-720p tearsofsteel-1080p bigbuckbunny-1080p bigbuckbunny-480p \ - openal-soft dleyna-core dleyna-renderer dleyna-server dleyna-connector-dbus \ - alsa-equal libdvdnav libmusicbrainz tinyalsa \ - fluidsynth cdparanoia vorbis-tools tremor caps libao libavc1394 \ - opusfile gerbera libdvdcss webrtc-audio-processing \ - rtmpdump libopenmpt schroedinger mpd mpc libmpdclient \ - ncmpc libmpd dcadec libiec61883 \ - ${@bb.utils.contains("DISTRO_FEATURES", "pam", "", "", d)} \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "minidlna vlc", "", d)} \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "vo-aacenc sox libde265", "", d)} \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "streamripper", "", d)} \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "openh264 opencore-amr faac vo-amrwbenc", "", d)} \ - " + alsa-equal \ + caps \ + cdparanoia \ + dcadec \ + dleyna-connector-dbus \ + dleyna-core \ + dleyna-renderer \ + dleyna-server \ + dvb-apps \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "faac", "", d)} \ + fdk-aac \ + gerbera \ + libao \ + libavc1394 \ + libdc1394 \ + libdvbpsi \ + libdvdnav \ + libiec61883 \ + fluidsynth \ + libmusicbrainz \ + libmpdclient \ + mpc \ + mpd \ + ncmpc \ + libmpd \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "opencore-amr vo-aacenc vo-amrwbenc", "", d)} \ + gst-shark \ + gstd \ + rtmpdump \ + bigbuckbunny-1080p \ + bigbuckbunny-480p \ + bigbuckbunny-720p \ + tearsofsteel-1080p \ + schroedinger \ + projucer \ + libcamera \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libde265 openh264", "", d)} \ + vorbis-tools \ + libdvbcsa \ + libopenmpt \ + mimic \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "minidlna", "", d)} \ + mycroft \ + openal-soft \ + opusfile \ + libdvdcss \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "vlc", "", d)} \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "sox streamripper", "", d)} \ + tinyalsa \ + tremor \ + webrtc-audio-processing \ + ${@bb.utils.contains_any("TRANSLATED_TARGET_ARCH", "i586 x86-64", "x265", "", d)} \ +" +RDEPENDS_packagegroup-meta-multimedia_remove_libc-musl = "projucer" RDEPENDS_packagegroup-meta-multimedia-connectivity = "\ - rygel gupnp gupnp-igd gssdp gupnp-dlna gupnp-av libupnp \ + gssdp \ + gupnp-av \ + gupnp-dlna \ + gupnp-igd \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gupnp-tools", "", d)} \ - " - + gupnp \ + libupnp \ + rygel \ +" RDEPENDS_packagegroup-meta-multimedia-dvb = "\ - oscam " + oscam \ + tvheadend \ +" RDEPENDS_packagegroup-meta-multimedia-mkv = "\ - libmatroska libebml \ - " + libebml \ + libmatroska \ +" RDEPENDS_packagegroup-meta-multimedia-support = "\ - libmediaart libmediaart-2.0 gst-instruments libsrtp crossguid \ - " + crossguid \ + libmediaart-2.0 \ + libmediaart \ + gst-instruments \ + libsrtp \ +" +# devel headers/libraries only packages +# libsquish diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb index d026c69a8..2f1fda341 100644 --- a/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb +++ b/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d91a46405fc074b88c963cc4f2a0aae9 \ DEPENDS = "orc-native orc" -SRC_URI = "http://www.diracvideo.org/download/schroedinger/${BP}.tar.gz \ +SRC_URI = "https://download.videolan.org/contrib/${BPN}/${BP}.tar.gz \ file://configure.ac.patch" SRC_URI[md5sum] = "da6af08e564ca1157348fb8d92efc891" diff --git a/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb b/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb index a84fd9ac1..9b69601e7 100644 --- a/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb +++ b/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb @@ -8,7 +8,7 @@ SRC_URI = "https://www.harding.motd.ca/autossh/${BP}.tgz" SRC_URI[md5sum] = "2b804bc1bf6d2f2afaa526d02df7c0a2" SRC_URI[sha256sum] = "5fc3cee3361ca1615af862364c480593171d0c54ec156de79fc421e31ae21277" -RDEPENDS_${PN} = "openssh" +RDEPENDS_${PN} = "ssh" CFLAGS_prepend = "-I${WORKDIR}/build " diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl/0001-make-Pass-LDFLAGS-when-building-shared-objects.patch b/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl/0001-make-Pass-LDFLAGS-when-building-shared-objects.patch new file mode 100644 index 000000000..3b341e035 --- /dev/null +++ b/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl/0001-make-Pass-LDFLAGS-when-building-shared-objects.patch @@ -0,0 +1,32 @@ +From 9515448761739d6186e7d07da5b47e368753528c Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 1 Sep 2020 11:34:33 -0700 +Subject: [PATCH] make: Pass LDFLAGS when building shared objects + +OE passes flags like hash-style via LDFLAGS which alters the linker +defaults, its important to have LDFLAGS in link step even if compiler +driver is used to do linking + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + mk/Rules.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk/Rules.mk b/mk/Rules.mk +index b480bd6..db65125 100644 +--- a/mk/Rules.mk ++++ b/mk/Rules.mk +@@ -344,7 +344,7 @@ $(BEARSSLLIB): $(OBJDIR) $(OBJ) + $(AR) $(ARFLAGS) $(AROUT)$(BEARSSLLIB) $(OBJ) + + $(BEARSSLDLL): $(OBJDIR) $(OBJ) +- $(LDDLL) $(LDDLLFLAGS) $(LDDLLOUT)$(BEARSSLDLL) $(OBJ) ++ $(LDDLL) $(LDDLLFLAGS) $(LDFLAGS) $(LDDLLOUT)$(BEARSSLDLL) $(OBJ) + + $(BRSSL): $(BEARSSLLIB) $(OBJBRSSL) + $(LD) $(LDFLAGS) $(LDOUT)$(BRSSL) $(OBJBRSSL) $(BEARSSLLIB) +-- +2.28.0 + diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl_0.6.bb b/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl_0.6.bb index a0f64e933..1102bb95a 100644 --- a/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl_0.6.bb +++ b/meta-openembedded/meta-networking/recipes-connectivity/bearssl/bearssl_0.6.bb @@ -18,6 +18,8 @@ HOMEPAGE = "https://bearssl.org" SECTION = "libs" +inherit lib_package + LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1fc37e1037ae673975fbcb96a98f7191" @@ -25,6 +27,7 @@ SRCREV = "8ef7680081c61b486622f2d983c0d3d21e83caad" SRC_URI = "git://www.bearssl.org/git/BearSSL;protocol=https;nobranch=1 \ file://0001-conf-Unix.mk-remove-fixed-command-definitions.patch \ file://0002-test-test_x509.c-fix-potential-overflow-issue.patch \ + file://0001-make-Pass-LDFLAGS-when-building-shared-objects.patch \ " # without compile errors like @@ -33,3 +36,11 @@ CFLAGS += "-fPIC" S = "${WORKDIR}/git" B = "${S}" + +do_install() { + mkdir -p ${D}/${bindir} ${D}/${libdir} + install -m 0644 ${B}/build/brssl ${D}/${bindir} + install -m 0644 ${B}/build/libbearssl.so ${D}/${libdir}/libbearssl.so.6.0.0 + ln -s libbearssl.so.6.0.0 ${D}/${libdir}/libbearssl.so.6 + ln -s libbearssl.so.6.0.0 ${D}/${libdir}/libbearssl.so +} diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_9.1.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_9.1.4.bb deleted file mode 100644 index defd3420f..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_9.1.4.bb +++ /dev/null @@ -1,28 +0,0 @@ -SECTION = "console/network" -SUMMARY = "dhcpcd - a DHCP client" -DESCRIPTION = "dhcpcd runs on your machine and silently configures your \ - computer to work on the attached networks without trouble \ - and mostly without configuration." - -HOMEPAGE = "http://roy.marples.name/projects/dhcpcd/" - -LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=9674cc803c5d71306941e6e8b5c002f2" - -UPSTREAM_CHECK_URI = "https://roy.marples.name/downloads/dhcpcd/" - -SRC_URI = "http://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \ - file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch" - -SRC_URI[sha256sum] = "5fe133e5497d8af6d26bd6e6b8dd48ab12d124d6cc4cefe6de6536ff97f76820" - -inherit pkgconfig autotools-brokensep - -PACKAGECONFIG ?= "udev ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" - -PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev" -PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6" - -EXTRA_OECONF = "--enable-ipv4" - -FILES_${PN}-dbg += "${libdir}/dhcpcd/dev/.debug" diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch b/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch deleted file mode 100644 index 37d234443..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch +++ /dev/null @@ -1,45 +0,0 @@ -From aa9e3982c1e75ad49945a62f5e262279c7a905a4 Mon Sep 17 00:00:00 2001 -From: Stefano Cappa <stefano.cappa.ks89@gmail.com> -Date: Sun, 13 Jan 2019 01:50:52 +0100 -Subject: [PATCH] remove INCLUDEDIR to prevent build issues - -Upstream-Status: Pending - -Signed-off-by: Stefano Cappa <stefano.cappa.ks89@gmail.com> ---- - configure | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/configure b/configure -index 6c81e0db..32dea2b4 100755 ---- a/configure -+++ b/configure -@@ -20,7 +20,6 @@ BUILD= - HOST= - HOSTCC= - TARGET= --INCLUDEDIR= - DEBUG= - FORK= - STATIC= -@@ -72,7 +71,6 @@ for x do - --mandir) MANDIR=$var;; - --datadir) DATADIR=$var;; - --with-ccopts|CFLAGS) CFLAGS=$var;; -- -I|--includedir) INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }-I$var";; - CC) CC=$var;; - CPPFLAGS) CPPFLAGS=$var;; - PKG_CONFIG) PKG_CONFIG=$var;; -@@ -309,9 +307,6 @@ if [ -n "$CPPFLAGS" ]; then - echo "CPPFLAGS=" >>$CONFIG_MK - echo "CPPFLAGS+= $CPPFLAGS" >>$CONFIG_MK - fi --if [ -n "$INCLUDEDIR" ]; then -- echo "CPPFLAGS+= $INCLUDEDIR" >>$CONFIG_MK --fi - if [ -n "$LDFLAGS" ]; then - echo "LDFLAGS=" >>$CONFIG_MK - echo "LDFLAGS+= $LDFLAGS" >>$CONFIG_MK --- -2.17.2 (Apple Git-113) - diff --git a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/0001-remove-AC_TRY_RUN.patch b/meta-openembedded/meta-networking/recipes-connectivity/kea/files/0001-remove-AC_TRY_RUN.patch deleted file mode 100644 index d7ca9ff8f..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/0001-remove-AC_TRY_RUN.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 9d6b8321c5b46199baca907f3d42bdcaaf1958a8 Mon Sep 17 00:00:00 2001 -From: Mingli Yu <mingli.yu@windriver.com> -Date: Thu, 23 May 2019 23:59:42 -0700 -Subject: [PATCH] remove AC_TRY_RUN - -AC_TRY_RUN doesn't work in cross compile env, -use AC_COMPILE_IFELSE instead to fix below configure -error: - | checking for usuable C++11 regex... configure: error: in `/builddir/tmp/work/core2-64-poky-linux/kea/1.5.0-r0/build': - | configure: error: cannot run test program while cross compiling - -Upstream-Status: Inappropriate [oe specific] - -Signed-off-by: Mingli Yu <mingli.yu@windriver.com> ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index c880b77..dd40c7c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -580,7 +580,7 @@ AC_TRY_COMPILE([ - AC_MSG_RESULT(no)) - - AC_MSG_CHECKING(for usuable C++11 regex) --AC_TRY_RUN([ -+AC_COMPILE_IFELSE([ - #include <regex> - #include <iostream> - int main() { --- -2.21.0 - diff --git a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp-ddns.service b/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp-ddns.service deleted file mode 100644 index 91aa2eb14..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp-ddns.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Kea DHCP-DDNS Server -Wants=network-online.target -After=network-online.target -After=time-sync.target - -[Service] -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/ -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/kea -ExecStart=@SBINDIR@/kea-dhcp-ddns -c @SYSCONFDIR@/kea/kea-dhcp-ddns.conf - -[Install] -WantedBy=multi-user.target diff --git a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp4.service b/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp4.service deleted file mode 100644 index b851ea71c..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp4.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Kea DHCPv4 Server -Wants=network-online.target -After=network-online.target -After=time-sync.target - -[Service] -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/ -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea -ExecStart=@SBINDIR@/kea-dhcp4 -c @SYSCONFDIR@/kea/kea-dhcp4.conf - -[Install] -WantedBy=multi-user.target diff --git a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp6.service b/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp6.service deleted file mode 100644 index 0f9f0ef8d..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/kea/files/kea-dhcp6.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Kea DHCPv6 Server -Wants=network-online.target -After=network-online.target -After=time-sync.target - -[Service] -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/run/kea/ -ExecStartPre=@BASE_BINDIR@/mkdir -p @LOCALSTATEDIR@/lib/kea -ExecStart=@SBINDIR@/kea-dhcp6 -c @SYSCONFDIR@/kea/kea-dhcp6.conf - -[Install] -WantedBy=multi-user.target diff --git a/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.7.bb b/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.7.bb deleted file mode 100644 index e25f8e6fb..000000000 --- a/meta-openembedded/meta-networking/recipes-connectivity/kea/kea_1.7.7.bb +++ /dev/null @@ -1,67 +0,0 @@ -SUMMARY = "ISC Kea DHCP Server" -DESCRIPTION = "Kea is the next generation of DHCP software developed by ISC. It supports both DHCPv4 and DHCPv6 protocols along with their extensions, e.g. prefix delegation and dynamic updates to DNS." -HOMEPAGE = "http://kea.isc.org" -SECTION = "connectivity" -LICENSE = "MPL-2.0 & Apache-2.0" -LIC_FILES_CHKSUM = "file://COPYING;md5=68d95543d2096459290a4e6b9ceccffa" - -DEPENDS += "kea-native" - -SRC_URI = "\ - http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \ - file://0001-remove-AC_TRY_RUN.patch \ - file://kea-dhcp4.service \ - file://kea-dhcp6.service \ - file://kea-dhcp-ddns.service \ -" -SRC_URI[md5sum] = "4f8d1251fd41ef2e822a4eb3f0797d46" -SRC_URI[sha256sum] = "0bba8b045672884a928ff4b2a8575ac5ba420eb6ba47a9338f1932bc38dcf866" - -inherit autotools systemd - -SYSTEMD_SERVICE_${PN} = "kea-dhcp4.service kea-dhcp6.service kea-dhcp-ddns.service" -SYSTEMD_AUTO_ENABLE = "disable" - -DEBUG_OPTIMIZATION_remove_mips = " -Og" -DEBUG_OPTIMIZATION_append_mips = " -O" -BUILD_OPTIMIZATION_remove_mips = " -Og" -BUILD_OPTIMIZATION_append_mips = " -O" - -DEBUG_OPTIMIZATION_remove_mipsel = " -Og" -DEBUG_OPTIMIZATION_append_mipsel = " -O" -BUILD_OPTIMIZATION_remove_mipsel = " -Og" -BUILD_OPTIMIZATION_append_mipsel = " -O" - -do_configure_prepend_class-target() { - mkdir -p ${B}/src/lib/log/compiler/ - ln -sf ${STAGING_BINDIR_NATIVE}/kea-msg-compiler ${B}/src/lib/log/compiler/kea-msg-compiler - # replace abs_top_builddir to avoid introducing the build path - # don't expand the abs_top_builddir on the target as the abs_top_builddir is meanlingless on the target - find ${S} -type f -name *.sh.in | xargs sed -i "s:@abs_top_builddir@:@abs_top_builddir_placeholder@:g" - sed -i "s:@abs_top_srcdir@:@abs_top_srcdir_placeholder@:g" ${S}/src/bin/admin/kea-admin.in -} - -do_install_append_class-target() { - install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir} - sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \ - -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \ - ${D}${systemd_system_unitdir}/kea-dhcp*service -} - -do_install_append() { - rm -rf "${D}${localstatedir}" -} - -PACKAGECONFIG ??= "openssl log4cplus boost" - -PACKAGECONFIG[openssl] = "--with-openssl=${STAGING_DIR_TARGET}${prefix},,openssl,openssl" -PACKAGECONFIG[log4cplus] = "--with-log4cplus=${STAGING_DIR_TARGET}${prefix},,log4cplus,log4cplus" -PACKAGECONFIG[boost] = "--with-boost-libs=-lboost_system,,boost,boost" - -FILES_${PN}-staticdev += "${libdir}/kea/hooks/*.a ${libdir}/hooks/*.a" -FILES_${PN} += "${libdir}/hooks/*.so" - -BBCLASSEXTEND += "native" - -PARALLEL_MAKEINST = "" diff --git a/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.1.bb b/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.2.bb index 79a380ada..e6240a58e 100644 --- a/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.1.bb +++ b/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.2.bb @@ -7,8 +7,8 @@ LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" SRC_URI = "http://lftp.yar.ru/ftp/lftp-${PV}.tar.bz2" -SRC_URI[md5sum] = "19ce64012bc722ad61667372fa262382" -SRC_URI[sha256sum] = "a692fd081c19e2cc045869ab721a4fb3d7571040849a4406c4042f735232414c" +SRC_URI[md5sum] = "42ec1793c386702bc2734ffbc8a5cff1" +SRC_URI[sha256sum] = "8a07cbf4df09b107fe3fc41d133ee2f6cea6ef4c33ccf06c8448ad058cd96b7e" inherit autotools gettext pkgconfig diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.12.bb b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.14.bb index 5b27cfe15..df48782ee 100644 --- a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.12.bb +++ b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.14.bb @@ -5,7 +5,7 @@ LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=0036c1b155f4e999f3e0a373490b5db9" SRC_URI = "git://github.com/dugsong/libdnet.git;nobranch=1" -SRCREV = "12fca29a6d4e99d1b923d6820887fe7b24226904" +SRCREV = "3e782472d2a58d5e1b94d04eda4a364c2d257600" UPSTREAM_CHECK_GITTAGREGEX = "libdnet-(?P<pver>\d+(\.\d+)+)" diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.11.bb b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.12.bb index 369034692..36bfe099f 100644 --- a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.11.bb +++ b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.6.12.bb @@ -20,8 +20,8 @@ SRC_URI = "http://mosquitto.org/files/source/mosquitto-${PV}.tar.gz \ file://install-protocol.patch \ " -SRC_URI[md5sum] = "35925c7ccd1bac87e4201b635ffa66a1" -SRC_URI[sha256sum] = "b02d8f1368c40d5779ee125c37daf9003608eb47d7fbb04c5b938c76c1230a1f" +SRC_URI[md5sum] = "beb8d76d6e45f1e66d711006082a631f" +SRC_URI[sha256sum] = "548d73d19fb787dd0530334e398fd256ef3a581181678488a741a995c4f007fb" inherit systemd update-rc.d useradd cmake diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.22.14.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.22.14.bb index 4e4217c1f..ac2282ea1 100644 --- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.22.14.bb +++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.22.14.bb @@ -74,7 +74,7 @@ PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,cons PACKAGECONFIG[modemmanager] = "--with-modem-manager-1=yes,--with-modem-manager-1=no,modemmanager" PACKAGECONFIG[ppp] = "--enable-ppp,--disable-ppp,ppp,ppp" # Use full featured dhcp client instead of internal one -PACKAGECONFIG[dhclient] = "--with-dhclient=${base_sbindir}/dhclient,,,dhcp-client" +PACKAGECONFIG[dhclient] = "--with-dhclient=${base_sbindir}/dhclient,,,dhcpcd" PACKAGECONFIG[dnsmasq] = "--with-dnsmasq=${bindir}/dnsmasq" PACKAGECONFIG[nss] = "--with-crypto=nss,,nss" PACKAGECONFIG[resolvconf] = "--with-resolvconf=${base_sbindir}/resolvconf,,,resolvconf" diff --git a/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb b/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb index 1e10c3085..0e668f7dd 100644 --- a/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb +++ b/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb @@ -31,101 +31,231 @@ RDEPENDS_packagegroup-meta-networking = "\ " RDEPENDS_packagegroup-meta-networking-connectivity = "\ - openconnect ez-ipupdate mosquitto sethdlc crda \ - dibbler-server dibbler-client dibbler-requestor dibbler-relay \ - libdnet ufw civetweb freeradius kea daq \ - mbedtls relayd snort dhcpcd rdate vlan vpnc \ - inetutils wolfssl lftp miniupnpd networkmanager \ - networkmanager-openvpn rdist nanomsg python3-networkmanager \ + crda \ + daq \ + adcli \ ${@bb.utils.contains("DISTRO_FEATURES", "bluetooth x11", "blueman", "", d)} \ + cannelloni \ + civetweb \ + libdnet \ + dibbler-client \ + dibbler-relay \ + dibbler-server \ + relayd \ + lftp \ + sethdlc \ + snort \ + ufw \ + vlan \ + vpnc \ + ez-ipupdate \ + firewalld \ + freeradius \ + mbedtls \ + miniupnpd \ + mosquitto \ + nanomsg \ + nng \ + netplan \ + networkmanager-openvpn \ + networkmanager \ + openconnect \ + python3-networkmanager \ + rdate \ + rdist \ ${@bb.utils.contains("DISTRO_FEATURES", "pam", "samba", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "pam", "samba", "", d)} \ - " + wolfssl \ + autossh \ + bearssl \ +" RDEPENDS_packagegroup-meta-networking-connectivity_remove_libc-musl = "rdist" RDEPENDS_packagegroup-meta-networking-daemons = "\ - ippool radvd autofs keepalived proftpd openhpi lldpd \ - ptpd igmpproxy opensaf squid \ - atftp postfix iscsi-initiator-utils vsftpd cyrus-sasl \ - pure-ftpd vblade tftp-hpa ncftp \ + atftp \ + autofs \ + cyrus-sasl \ + ippool \ + iscsi-initiator-utils \ + lldpd \ + ncftp \ + igmpproxy \ + postfix \ + proftpd \ + ptpd \ + pure-ftpd \ + radvd \ + squid \ + tftp-hpa \ + tftp-hpa-server \ + vblade \ + vsftpd \ + keepalived \ ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "networkd-dispatcher", "", d)} \ - " + openhpi \ + opensaf \ +" RDEPENDS_packagegroup-meta-networking-daemons_remove_libc-musl = "opensaf" RDEPENDS_packagegroup-meta-networking-devtools = "\ python3-ldap \ - " +" RDEPENDS_packagegroup-meta-networking-extended = "\ corosync \ ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "dlm", "", d)} \ - " + kronosnet \ +" RDEPENDS_packagegroup-meta-networking-filter = "\ - ebtables conntrack-tools libnetfilter-queue \ - libnetfilter-conntrack libnetfilter-cthelper libnetfilter-acct \ - libnetfilter-cttimeout libnetfilter-log nfacct \ - arno-iptables-firewall libnftnl nftables \ + libnftnl \ + conntrack-tools \ + ebtables \ + libnetfilter-acct \ + libnetfilter-conntrack \ + libnetfilter-cthelper \ + libnetfilter-cttimeout \ + libnetfilter-log \ + libnetfilter-queue \ libnfnetlink \ - " + arno-iptables-firewall \ + nfacct \ + nftables \ +" RDEPENDS_packagegroup-meta-networking-irc = "\ + weechat \ znc \ - " +" RDEPENDS_packagegroup-meta-networking-kernel = "\ - wireguard-module wireguard-tools \ - " + wireguard-tools \ +" RDEPENDS_packagegroup-meta-networking-netkit = "\ - netkit-rwho-client netkit-rwho-server netkit-rsh-client netkit-rsh-server \ - netkit-telnet netkit-tftp-client netkit-tftp-server \ - netkit-ftp netkit-rpc \ + netkit-rwho-client \ + netkit-rwho-server \ + netkit-rsh-client \ + netkit-rsh-server \ + netkit-telnet \ + netkit-tftp-client \ + netkit-tftp-server \ + netkit-ftp \ + netkit-rpc \ " RDEPENDS_packagegroup-meta-networking-netkit_remove_libc-musl = " \ netkit-rsh-client netkit-rsh-server netkit-telnet" RDEPENDS_packagegroup-meta-networking-protocols = "\ - tsocks freediameter xl2tpd babeld mdns net-snmp \ - quagga pptp-linux zeroconf nopoll openflow rp-pppoe \ - radiusclient-ng openl2tp usrsctp \ + babeld \ ${@bb.utils.contains("DISTRO_FEATURES", "pam", "dante", "", d)} \ - " + freediameter \ + net-snmp \ + openflow \ + openflow \ + openl2tp \ + mdns \ + nopoll \ + quagga \ + radiusclient-ng \ + tsocks \ + openlldp \ + zeroconf \ + pptp-linux \ + rp-pppoe \ + usrsctp \ + xl2tpd \ +" RDEPENDS_packagegroup-meta-networking-protocols_remove_libc-musl = "mdns" RDEPENDS_packagegroup-meta-networking-support = "\ - ncp ndisc6 mtr tinyproxy ssmping ntp \ - wpan-tools bridge-utils ifenslave celt051 pimd \ - nbd-client nbd-server nbd-trdump \ - phytool fwknop htpdate tcpreplay \ - traceroute geoip-perl geoip geoipupdate esmtp \ - libtdb netcf dnsmasq curlpp openipmi drbd-utils \ - tunctl dovecot ipvsadm stunnel chrony spice-protocol \ - usbredir ntop wireshark tnftp lksctp-tools \ - cim-schema-docs cim-schema-final cim-schema-exper \ - libmemcached smcroute libtevent ipcalc uftp \ - ntimed linux-atm ssmtp openvpn rdma-core \ - iftop aoetools tcpslice tcpdump libtalloc memcached nuttcp netcat \ - netcat-openbsd fetchmail yp-tools ypbind-mt yp-tools \ - arptables macchanger nghttp2 strongswan fping \ - libesmtp cifs-utils open-isns \ + aoetools \ + arptables \ + bridge-utils \ + celt051 \ + cim-schema-docs \ + cim-schema-final \ + cifs-utils \ + dnsmasq \ + curlpp \ + drbd-utils \ + dovecot \ + fping \ + esmtp \ + fetchmail \ + geoip-perl \ + geoip \ + geoipupdate \ + fwknop \ + htpdate \ + iftop \ + ifmetric \ + ipvsadm \ + libesmtp \ ${@bb.utils.contains("DISTRO_FEATURES", "pam", "libldb", "", d)} \ + libmemcached \ + libtalloc \ + ipcalc \ + libtevent \ + linux-atm \ + lksctp-tools \ + memcached \ + ifenslave \ + netcat \ + netcat-openbsd \ + libtdb \ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "non-commercial", "netperf", "", d)} \ - ${@bb.utils.contains_any("TRANSLATED_TARGET_ARCH", "i586 x86-64", "spice", "", d)} \ - " - - -RDEPENDS_packagegroup-meta-networking-support_remove_mipsarch = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_mips64 = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_mips64el = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_powerpc = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_riscv64 = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_riscv32 = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_armv5 = "spice-protocol" -RDEPENDS_packagegroup-meta-networking-support_remove_aarch64 = "spice-protocol memcached" + yp-tools \ + ypbind-mt \ + yp-tools \ + mtr \ + ntp ntpdate sntp ntpdc ntpq ntp-tickadj ntp-utils \ + nbd-client \ + nbd-server \ + nbd-trdump \ + openvpn \ + macchanger \ + nbdkit \ + ssmping \ + libowfat \ + ncp \ + strongswan \ + ndisc6 \ + tcpdump \ + tcpslice \ + netcf \ + nghttp2 \ + tnftp \ + traceroute \ + tunctl \ + wireshark \ + ntop \ + nuttcp \ + nvmetcli \ + open-isns \ + openipmi \ + phytool \ + pimd \ + ruli \ + smcroute \ + ${@bb.utils.contains_any("TRANSLATED_TARGET_ARCH", "i586 x86-64", "spice-protocol spice", "", d)} \ + usbredir \ + ssmtp \ + stunnel \ + rdma-core \ + tcpreplay \ + tinyproxy \ + uftp \ + unbound \ + wpan-tools \ + ettercap \ +" +RDEPENDS_packagegroup-meta-networking-support_remove_mipsarch = "memcached" EXCLUDE_FROM_WORLD = "1" +# Empty packages, only devel headers and libs +# nngpp +# Use ntp and not chrony or ntimed diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.12.bb b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.13.bb index 6e49790fe..873d09344 100644 --- a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.12.bb +++ b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.13.bb @@ -28,8 +28,8 @@ SRC_URI = "http://www.squid-cache.org/Versions/v${MAJ_VER}/${BPN}-${PV}.tar.bz2 SRC_URI_remove_toolchain-clang = "file://0001-configure-Check-for-Wno-error-format-truncation-comp.patch" -SRC_URI[md5sum] = "5d058f7f8f1db9fa4ce3db910a008b0e" -SRC_URI[sha256sum] = "eae0ad993921e472ce36cce34674c47a224fc2868b65ef0c4b41b2f5f18378a0" +SRC_URI[md5sum] = "31e524a416715d6bfef30e072d2ca076" +SRC_URI[sha256sum] = "d09d3c31e3a7d158bda75501e763bd1cd3c3a99f5af6781ec1fd30eed2f771ed" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://errors/COPYRIGHT;md5=4c3268f394af77fbbf541875cef96a6c \ diff --git a/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_2.8.bb b/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_2.9.bb index cdfb1a963..512ed0e49 100644 --- a/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_2.8.bb +++ b/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_2.9.bb @@ -9,13 +9,14 @@ DEPENDS = "openssl zlib icu libgcrypt gnutls curl aspell" SRC_URI = "https://weechat.org/files/src/weechat-${PV}.tar.xz \ file://0001-use-pkg-config-for-gcrypt-instead.patch \ " -SRC_URI[sha256sum] = "553ea295edad3b03cf88e6029c21e7bde32ff1cc026d35386ba9da3e56a6018c" + +SRC_URI[sha256sum] = "eab406c385c3a10d0107ddc3aac6596ae8c59af99e9158c6d769e90ec9adfa0e" inherit cmake pkgconfig PACKAGECONFIG ??= " ncurses python" PACKAGECONFIG[ncurses] = "-DENABLE_NCURSES=ON,-DENABLE_NCURSES=OFF,ncurses" -PACKAGECONFIG[python] = "-DENABLE_PYTHON=ON,-DENABLE_PYTHON=OFF,python3" +PACKAGECONFIG[python] = "-DENABLE_PYTHON=ON,-DENABLE_PYTHON=OFF,python3,python3" EXTRA_OECMAKE_append = " -DENABLE_PHP=OFF -DENABLE_TCL=OFF -DENABLE_LUA=OFF -DENABLE_JAVASCRIPT=OFF -DENABLE_RUBY=OFF -DENABLE_GUILE=OFF -DENABLE_PERL=OFF -DENABLE_ASPELL=ON" diff --git a/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.7.5.bb b/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.8.1.bb index a3d4b7cc5..c54e617fd 100644 --- a/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.7.5.bb +++ b/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.8.1.bb @@ -8,7 +8,7 @@ DEPENDS = "openssl zlib icu" SRC_URI = "git://github.com/znc/znc.git;name=znc \ git://github.com/jimloco/Csocket.git;destsuffix=git/third_party/Csocket;name=Csocket \ " -SRCREV_znc = "c7f72f8bc800115ac985e7e13eace78031cb1b50" +SRCREV_znc = "0a3909beaa15e0da499473d6d041e5b75c14e885" SRCREV_Csocket = "e8d9e0bb248c521c2c7fa01e1c6a116d929c41b4" # This constructs a composite revision based on multiple SRCREV's. diff --git a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20200712.bb b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20200712.bb index bc94e29ea..3a83e48ee 100644 --- a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20200712.bb +++ b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20200712.bb @@ -33,3 +33,8 @@ module_do_install() { install -m 0644 ${MODULE_NAME}.ko \ ${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/${MODULE_NAME}/${MODULE_NAME}.ko } + +# WireGuard has been merged into Linux kernel >= 5.6 and therefore this compatibility module is no longer required. +# OE-core post dunfell has moved to use kernel 5.8 which now means we cant build this module in world builds +# for reference machines e.g. qemu +EXCLUDE_FROM_WORLD = "1" diff --git a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-tools_1.0.20200513.bb b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-tools_1.0.20200513.bb index c24e3438c..31b33a045 100644 --- a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-tools_1.0.20200513.bb +++ b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-tools_1.0.20200513.bb @@ -5,7 +5,7 @@ SRC_URI = "git://git.zx2c4.com/wireguard-tools" inherit bash-completion systemd pkgconfig -DEPENDS += "wireguard-module libmnl" +DEPENDS += "libmnl" do_install () { oe_runmake DESTDIR="${D}" PREFIX="${prefix}" SYSCONFDIR="${sysconfdir}" \ @@ -22,4 +22,5 @@ FILES_${PN} = " \ ${bindir} \ " -RDEPENDS_${PN} = "wireguard-module bash" +RDEPENDS_${PN} = "bash" +RRECOMMENDS_${PN} = "kernel-module-wireguard" diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb index cf306ec82..628047eee 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb @@ -16,7 +16,7 @@ SRC_URI[archive.sha256sum] = "61c913299b81a4671ff089aac821329f7db9bc111aa812993d SRC_URI[patch31.md5sum] = "93d71e28ce70df69e080c7f90da63cac" SRC_URI[patch31.sha256sum] = "4edd46a32d70daa7ba00f0ebf0118dc5d17dff23d6e46aa21a2722be2e22d1c1" -inherit autotools-brokensep +inherit autotools-brokensep update-alternatives CLEANBROKEN = "1" @@ -47,3 +47,7 @@ FILES_${PN}-dbg = "${prefix}/src/debug \ ${bindir}/.debug" RDEPENDS_${PN} = "readline" + +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE_${PN} = "ftp" +ALTERNATIVE_LINK_NAME[ftp] = "${bindir}/ftp" diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb index ebe867d77..a787e52f7 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb @@ -11,6 +11,9 @@ SRC_URI = "http://sources.openembedded.org/${BPN}-${PV}.tar.gz \ " SRC_URI[md5sum] = "67212720482ea1aea9182a98653a9642" SRC_URI[sha256sum] = "421d63b414162237a72867061f1bd3e3752a0d962cd5d30b5e933ddad8a14d3b" + +inherit update-alternatives + CFLAGS += "-I${STAGING_INCDIR}/tirpc" LIBS += "-ltirpc" @@ -42,3 +45,7 @@ do_install () { 'BINDIR=${bindir}' 'SBINDIR=${sbindir}' \ 'MANDIR=${mandir}' install } +ALTERNATIVE_PRIORITY = "100" + +ALTERNATIVE_${PN} = "rpcinfo" +ALTERNATIVE_LINK_NAME[rpcinfo] = "${bindir}/rpcinfo" diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb index ad543b0fb..308582398 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb @@ -82,8 +82,7 @@ do_install () { mkdir -p -m 755 ${D}${localstatedir}/spool/rwho chown -R rwhod ${D}${localstatedir}/spool/rwho } - -pkg_postinst_${PN}-server() { +pkg_postinst_ontarget_${PN}-server() { ${sysconfdir}/init.d/rwhod start } diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb index 92c13e850..28e016400 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb @@ -16,7 +16,7 @@ SRC_URI[archive.sha256sum] = "3a43c0010d4e61f412563fd83769d4667d8b8e82903526d21c SRC_URI[patch18.md5sum] = "cb29e7a33dd85105ba6e6ec4f971e42c" SRC_URI[patch18.sha256sum] = "092437d27b4fa88c044ef6290372fee5ce06d223607f0e22a6e527065c8930e7" -inherit autotools-brokensep +inherit autotools-brokensep update-alternatives do_configure () { ./configure --prefix=${prefix} @@ -53,3 +53,7 @@ FILES_${PN}-dbg = "${prefix}/src/debug \ ${bindir}/.debug ${sbindir}/.debug" RDEPENDS_${PN}-server = "tcp-wrappers xinetd" + +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE_${PN}-client = "tftp" +ALTERNATIVE_LINK_NAME[tftp] = "${bindir}/tftp" diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-Create-subroutine-for-cleaning-recent-interfaces.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-Create-subroutine-for-cleaning-recent-interfaces.patch index 692c344db..f8efc1044 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-Create-subroutine-for-cleaning-recent-interfaces.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-Create-subroutine-for-cleaning-recent-interfaces.patch @@ -1,7 +1,7 @@ -From 89ea6ac4a8840e8c2be0140a9805c6522c6c5280 Mon Sep 17 00:00:00 2001 +From 6d90f9fdaf008f5c3b8fd8d91594fa1461437888 Mon Sep 17 00:00:00 2001 From: Nate Karstens <nate.karstens@garmin.com> Date: Wed, 28 Jun 2017 17:30:00 -0500 -Subject: [PATCH 01/11] Create subroutine for cleaning recent interfaces +Subject: [PATCH] Create subroutine for cleaning recent interfaces Moves functionality for cleaning the list of recent interfaces into its own subroutine. @@ -10,14 +10,14 @@ Upstream-Status: Submitted [dts@apple.com] Signed-off-by: Nate Karstens <nate.karstens@garmin.com> --- - mDNSPosix/mDNSPosix.c | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) + mDNSPosix/mDNSPosix.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c -index 0e10bd5..ffc9696 100644 +index a63cd19..7aeee7b 100755 --- a/mDNSPosix/mDNSPosix.c +++ b/mDNSPosix/mDNSPosix.c -@@ -856,6 +856,19 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf +@@ -1199,6 +1199,19 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf return err; } @@ -37,11 +37,10 @@ index 0e10bd5..ffc9696 100644 // Creates a PosixNetworkInterface for the interface whose IP address is // intfAddr and whose name is intfName and registers it with mDNS core. mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct sockaddr *intfMask, const char *intfName, int intfIndex) -@@ -1010,16 +1023,7 @@ mDNSlocal int SetupInterfaceList(mDNS *const m) - +@@ -1388,15 +1401,7 @@ mDNSlocal int SetupInterfaceList(mDNS *const m) // Clean up. - if (intfList != NULL) free_ifi_info(intfList); -- + if (intfList != NULL) freeifaddrs(intfList); + - // Clean up any interfaces that have been hanging around on the RecentInterfaces list for more than a minute - PosixNetworkInterface **ri = &gRecentInterfaces; - const mDNSs32 utc = mDNSPlatformUTC(); @@ -56,5 +55,5 @@ index 0e10bd5..ffc9696 100644 return err; } -- -2.17.1 +2.20.1 diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-mdns-include-stddef.h-for-NULL.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-mdns-include-stddef.h-for-NULL.patch new file mode 100644 index 000000000..3e9be7d6a --- /dev/null +++ b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0001-mdns-include-stddef.h-for-NULL.patch @@ -0,0 +1,40 @@ +From d744609c56f9872e5aa71707f1f71feec9867f51 Mon Sep 17 00:00:00 2001 +From: Mikko Rapeli <mikko.rapeli@bmw.de> +Date: Tue, 14 Jul 2020 16:36:29 +0000 +Subject: [PATCH 1/2] mdns: include <stddef.h> for NULL + +Fixes build error with version 1096.40.7: + +../mDNSCore/mDNS.c:11385:26: error: 'NULL' undeclared (first use in this function) +11385 | const char *reason = NULL; + | ^~~~ +../mDNSCore/mDNS.c:56:1: note: 'NULL' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'? + 55 | #include "dns_sd_internal.h" + +++ |+#include <stddef.h> + 56 | +../mDNSCore/mDNS.c:11385:26: note: each undeclared identifier is reported only once for each function it appears in +11385 | const char *reason = NULL; + | ^~~~ + +Upstream-Status: Pending + +Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de> +--- + mDNSCore/mDNS.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mDNSCore/mDNS.c b/mDNSCore/mDNS.c +index 2fbea04..d4b9af5 100755 +--- a/mDNSCore/mDNS.c ++++ b/mDNSCore/mDNS.c +@@ -23,6 +23,7 @@ + * routines, or types (which may or may not be present on any given platform). + */ + ++#include <stddef.h> /* for NULL */ + #include "DNSCommon.h" // Defines general DNS utility routines + #include "uDNS.h" // Defines entry points into unicast-specific routines + #include "nsec.h" +-- +2.20.1 + diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0002-mdns-cross-compilation-fixes-for-bitbake.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0002-mdns-cross-compilation-fixes-for-bitbake.patch new file mode 100644 index 000000000..33590ffc5 --- /dev/null +++ b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0002-mdns-cross-compilation-fixes-for-bitbake.patch @@ -0,0 +1,145 @@ +From 72405143f9d16514e70b88bc4843c9634b88036a Mon Sep 17 00:00:00 2001 +From: Brendan Le Foll <brendan.le.foll@intel.com> +Date: Tue, 3 Mar 2015 11:42:57 +0000 +Subject: [PATCH 2/2] mdns: cross compilation fixes for bitbake + +Fixes several build errors when incorrect compiler or +compiler flags are used. + +Upstream-Status: Inappropriate [OE-specific] + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de> +--- + mDNSPosix/Makefile | 44 ++++++++++++++++++++------------------------ + 1 file changed, 20 insertions(+), 24 deletions(-) + +diff --git a/mDNSPosix/Makefile b/mDNSPosix/Makefile +index 78222e0..18a3af5 100755 +--- a/mDNSPosix/Makefile ++++ b/mDNSPosix/Makefile +@@ -50,6 +50,7 @@ + + LIBVERS = 1 + ++POSIXDIR = ../mDNSPosix + COREDIR = ../mDNSCore + SHAREDDIR ?= ../mDNSShared + DSODIR ?= ../DSO +@@ -62,16 +63,16 @@ else ifeq ($(SYSTEM), Linux) + os=linux + endif + +-CC = cc +-BISON = bison +-FLEX = flex +-ST = strip +-LD = ld ++CC ?= cc ++BISON ?= bison ++FLEX ?= flex ++ST ?= strip ++LD ?= ld + SOOPTS = -shared + CP = cp + RM = rm + LN = ln -s -f +-CFLAGS_COMMON = -I$(COREDIR) -I$(SHAREDDIR) -I$(DSODIR) -I$(PROXYDIR) -I$(OBJDIR) -fwrapv -W -Wall -DPID_FILE=\"/var/run/mdnsd.pid\" -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" ++CFLAGS_COMMON = -I$(POSIXDIR) -I$(COREDIR) -I$(SHAREDDIR) -I$(DSODIR) -I$(PROXYDIR) -I$(OBJDIR) -fwrapv -W -Wall -DPID_FILE=\"/var/run/mdnsd.pid\" -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" + CFLAGS_PTHREAD = + LINKOPTS = + LINKOPTS_PTHREAD = -lpthread +@@ -85,6 +86,7 @@ CFLAGS_OPEN_SOURCE= + endif + + # Set up diverging paths for debug vs. prod builds ++DEBUG ?= 1 + ifeq "$(DEBUG)" "1" + CFLAGS_DEBUGGING = -g -DMDNS_DEBUGMSGS=2 + OBJDIR = objects/debug +@@ -101,8 +103,8 @@ else + # 1. We want to make small binaries, suitable for putting into hardware devices + # 2. Some of the code analysis warnings only work when some form of optimization is enabled + CFLAGS_DEBUGGING = -g -DMDNS_DEBUGMSGS=0 +-OBJDIR ?= objects/prod +-BUILDDIR ?= build/prod ++OBJDIR = objects/prod ++BUILDDIR = build/prod + STRIP = $(ST) -S + endif + endif +@@ -125,7 +127,7 @@ else + # any target that contains the string "linux" + ifeq ($(findstring linux,$(os)),linux) + CFLAGS_OS = -D_GNU_SOURCE -DHAVE_IPV6 -DNOT_HAVE_SA_LEN -DUSES_NETLINK -DHAVE_LINUX -DTARGET_OS_LINUX -ftabstop=4 +-LD = $(CC) ++LD ?= $(CC) + SOOPTS = -shared + FLEXFLAGS_OS = -l + JAVACFLAGS_OS += -I$(JDK)/include/linux +@@ -276,8 +278,7 @@ Daemon: setup $(BUILDDIR)/mdnsd + @echo "Responder daemon done" + + $(BUILDDIR)/mdnsd: $(DAEMONOBJS) +- $(CC) -o $@ $+ $(LINKOPTS) +- $(STRIP) $@ ++ $(LD) -o $@ $+ + + # libdns_sd target builds the client library + libdns_sd: setup $(BUILDDIR)/libdns_sd.$(LDSUFFIX) +@@ -286,13 +287,9 @@ libdns_sd: setup $(BUILDDIR)/libdns_sd.$(LDSUFFIX) + CLIENTLIBOBJS = $(OBJDIR)/dnssd_clientlib.c.so.o $(OBJDIR)/dnssd_clientstub.c.so.o $(OBJDIR)/dnssd_ipc.c.so.o + + $(BUILDDIR)/libdns_sd.$(LDSUFFIX): $(CLIENTLIBOBJS) +- $(LD) $(SOOPTS) $(LINKOPTS) -o $@ $+ +- $(STRIP) $@ +- +-Clients: setup libdns_sd ../Clients/build/dns-sd +- @echo "Clients done" ++ $(LD) -shared $(LINKOPTS) -Wl,-soname,libdns_sd.$(LDSUFFIX).1 -o $@ $+ + +-../Clients/build/dns-sd: ../Clients/dns-sd.c ++Clients: setup libdns_sd + $(MAKE) -C ../Clients DEBUG=$(DEBUG) SUPMAKE_CFLAGS="$(MDNSCFLAGS)" + + # nss_mdns target builds the Name Service Switch module +@@ -300,8 +297,7 @@ nss_mdns: setup $(BUILDDIR)/$(NSSLIBFILE) + @echo "Name Service Switch module done" + + $(BUILDDIR)/$(NSSLIBFILE): $(CLIENTLIBOBJS) $(OBJDIR)/nss_mdns.c.so.o +- $(LD) $(SOOPTS) $(LINKOPTS) -o $@ $+ +- $(STRIP) $@ ++ $(LD) -shared $(LINKOPTS) -o $@ $+ + + ############################################################################# + +@@ -494,21 +490,21 @@ dnsextd: setup $(BUILDDIR)/dnsextd + @echo "dnsextd done" + + $(BUILDDIR)/mDNSClientPosix: $(APPOBJ) $(OBJDIR)/Client.c.o +- $(CC) $+ -o $@ $(LINKOPTS) ++ $(CC) $+ -o $@ + + $(BUILDDIR)/mDNSResponderPosix: $(COMMONOBJ) $(OBJDIR)/Responder.c.o +- $(CC) $+ -o $@ $(LINKOPTS) ++ $(CC) $+ -o $@ + + $(BUILDDIR)/mDNSProxyResponderPosix: $(COMMONOBJ) $(OBJDIR)/ProxyResponder.c.o +- $(CC) $+ -o $@ $(LINKOPTS) ++ $(CC) $+ -o $@ + + $(BUILDDIR)/mDNSNetMonitor: $(SPECIALOBJ) $(OBJDIR)/NetMonitor.c.o +- $(CC) $+ -o $@ $(LINKOPTS) ++ $(CC) $+ -o $@ + + $(OBJDIR)/NetMonitor.c.o: $(COREDIR)/mDNS.c # Note: NetMonitor.c textually imports mDNS.c + + $(BUILDDIR)/dnsextd: $(DNSEXTDOBJ) $(OBJDIR)/dnsextd.c.threadsafe.o +- $(CC) $+ -o $@ $(LINKOPTS) $(LINKOPTS_PTHREAD) ++ $(CC) $+ -o $@ $(LINKOPTS_PTHREAD) + + ############################################################################# + +-- +2.20.1 + diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0004-Use-list-for-changed-interfaces.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0004-Use-list-for-changed-interfaces.patch index 05ad49b9f..db3a63ea4 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0004-Use-list-for-changed-interfaces.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0004-Use-list-for-changed-interfaces.patch @@ -1,4 +1,4 @@ -From e1f483510a1011e37540fdee8f3bc36111fa45a0 Mon Sep 17 00:00:00 2001 +From 798bfb5e984845a27874d1a244686db6e384d7b8 Mon Sep 17 00:00:00 2001 From: Nate Karstens <nate.karstens@garmin.com> Date: Thu, 13 Jul 2017 09:00:00 -0500 Subject: [PATCH 04/11] Use list for changed interfaces @@ -15,10 +15,10 @@ Signed-off-by: Nate Karstens <nate.karstens@garmin.com> 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c -index 8fe22be..699855a 100644 +index 195d04b..bb883c1 100755 --- a/mDNSPosix/mDNSPosix.c +++ b/mDNSPosix/mDNSPosix.c -@@ -75,6 +75,14 @@ struct IfChangeRec +@@ -67,6 +67,14 @@ struct IfChangeRec }; typedef struct IfChangeRec IfChangeRec; @@ -31,9 +31,9 @@ index 8fe22be..699855a 100644 +typedef struct NetworkInterfaceIndex NetworkInterfaceIndex; + // Note that static data is initialized to zero in (modern) C. - static fd_set gEventFDs; - static int gMaxFD; // largest fd in gEventFDs -@@ -1071,6 +1079,32 @@ mDNSlocal mStatus OpenIfNotifySocket(int *pFD) + static PosixEventSource *gEventSources; // linked list of PosixEventSource's + static sigset_t gEventSignalSet; // Signals which event loop listens for +@@ -1458,6 +1466,32 @@ mDNSlocal mStatus OpenIfNotifySocket(int *pFD) return err; } @@ -66,7 +66,7 @@ index 8fe22be..699855a 100644 #if MDNS_DEBUGMSGS mDNSlocal void PrintNetLinkMsg(const struct nlmsghdr *pNLMsg) { -@@ -1098,14 +1132,13 @@ mDNSlocal void PrintNetLinkMsg(const struct nlmsghdr *pNLMsg) +@@ -1485,14 +1519,13 @@ mDNSlocal void PrintNetLinkMsg(const struct nlmsghdr *pNLMsg) } #endif @@ -82,7 +82,7 @@ index 8fe22be..699855a 100644 // The structure here is more complex than it really ought to be because, // unfortunately, there's no good way to size a buffer in advance large -@@ -1141,9 +1174,9 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd) +@@ -1528,9 +1561,9 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd) // Process the NetLink message if (pNLMsg->nlmsg_type == RTM_GETLINK || pNLMsg->nlmsg_type == RTM_NEWLINK) @@ -94,7 +94,7 @@ index 8fe22be..699855a 100644 // Advance pNLMsg to the next message in the buffer if ((pNLMsg->nlmsg_flags & NLM_F_MULTI) != 0 && pNLMsg->nlmsg_type != NLMSG_DONE) -@@ -1154,8 +1187,6 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd) +@@ -1541,8 +1574,6 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd) else break; // all done! } @@ -103,7 +103,7 @@ index 8fe22be..699855a 100644 } #else // USES_NETLINK -@@ -1187,14 +1218,13 @@ mDNSlocal void PrintRoutingSocketMsg(const struct ifa_msghdr *pRSMsg) +@@ -1574,14 +1605,13 @@ mDNSlocal void PrintRoutingSocketMsg(const struct ifa_msghdr *pRSMsg) } #endif @@ -119,7 +119,7 @@ index 8fe22be..699855a 100644 readCount = read(sd, buff, sizeof buff); if (readCount < (ssize_t) sizeof(struct ifa_msghdr)) -@@ -1209,12 +1239,10 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd) +@@ -1596,12 +1626,10 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd) pRSMsg->ifam_type == RTM_IFINFO) { if (pRSMsg->ifam_type == RTM_IFINFO) @@ -134,7 +134,7 @@ index 8fe22be..699855a 100644 } #endif // USES_NETLINK -@@ -1224,7 +1252,8 @@ mDNSlocal void InterfaceChangeCallback(int fd, short filter, void *context) +@@ -1611,7 +1639,8 @@ mDNSlocal void InterfaceChangeCallback(int fd, void *context) { IfChangeRec *pChgRec = (IfChangeRec*) context; fd_set readFDs; @@ -144,7 +144,7 @@ index 8fe22be..699855a 100644 struct timeval zeroTimeout = { 0, 0 }; (void)fd; // Unused -@@ -1233,17 +1262,25 @@ mDNSlocal void InterfaceChangeCallback(int fd, short filter, void *context) +@@ -1619,17 +1648,25 @@ mDNSlocal void InterfaceChangeCallback(int fd, void *context) FD_ZERO(&readFDs); FD_SET(pChgRec->NotifySD, &readFDs); @@ -173,5 +173,5 @@ index 8fe22be..699855a 100644 // Register with either a Routing Socket or RtNetLink to listen for interface changes. -- -2.17.1 +2.20.1 diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0005-Handle-noisy-netlink-sockets.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0005-Handle-noisy-netlink-sockets.patch deleted file mode 100644 index f2b171e55..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0005-Handle-noisy-netlink-sockets.patch +++ /dev/null @@ -1,212 +0,0 @@ -From 92025cab86619f548bf3eb816a1804ef40507ca7 Mon Sep 17 00:00:00 2001 -From: Nate Karstens <nate.karstens@garmin.com> -Date: Mon, 24 Jul 2017 09:38:55 -0500 -Subject: [PATCH 05/11] Handle noisy netlink sockets - -The POSIX implementation currently clears all network interfaces -when netlink indicates that there has been a change. This causes -the following problems: - - 1) Applications are informed that all of the services they are - tracking have been removed. - 2) Increases network load because the client must re-query for - all records it is interested in. - -This changes netlink notification handling by: - - 1) Always comparing with the latest interface list returned - by the OS. - 2) Confirming that the interface has been changed in a way - that we care about. - -Upstream-Status: Submitted [dts@apple.com] - -Signed-off-by: Nate Karstens <nate.karstens@garmin.com> ---- - mDNSPosix/mDNSPosix.c | 143 +++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 133 insertions(+), 10 deletions(-) - -diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c -index 699855a..59a8b8c 100644 ---- a/mDNSPosix/mDNSPosix.c -+++ b/mDNSPosix/mDNSPosix.c -@@ -1247,14 +1247,38 @@ mDNSlocal void ProcessRoutingNotification(int sd, GenLinkedList *change - - #endif // USES_NETLINK - -+// Test whether the given PosixNetworkInterface matches the given struct ifi_info -+mDNSlocal mDNSBool InterfacesMatch(PosixNetworkInterface *intf, struct ifi_info *ifi) -+{ -+ mDNSBool match = mDNSfalse; -+ mDNSAddr ip, mask; -+ -+ if((intf->index == ifi->ifi_index) && -+ (intf->sa_family == ifi->ifi_addr->sa_family) && -+ (strcmp(intf->coreIntf.ifname, ifi->ifi_name) == 0)) -+ { -+ SockAddrTomDNSAddr(ifi->ifi_addr, &ip, NULL); -+ SockAddrTomDNSAddr(ifi->ifi_netmask, &mask, NULL); -+ -+ match = mDNSSameAddress(&intf->coreIntf.ip, &ip) && -+ mDNSSameAddress(&intf->coreIntf.mask, &mask); -+ } -+ -+ return match; -+} -+ - // Called when data appears on interface change notification socket - mDNSlocal void InterfaceChangeCallback(int fd, short filter, void *context) - { - IfChangeRec *pChgRec = (IfChangeRec*) context; -+ mDNS *m = pChgRec->mDNS; - fd_set readFDs; - GenLinkedList changedInterfaces; - NetworkInterfaceIndex *changedInterface; - struct timeval zeroTimeout = { 0, 0 }; -+ struct ifi_info *ifi_list, **ifi, *ifi_free, *ifi_loop4 = NULL; -+ PosixNetworkInterface *intf, *intfNext; -+ mDNSBool found, foundav4; - - (void)fd; // Unused - (void)filter; // Unused -@@ -1270,12 +1294,115 @@ mDNSlocal void InterfaceChangeCallback(int fd, short filter, void *context) - } - while (0 < select(pChgRec->NotifySD + 1, &readFDs, (fd_set*) NULL, (fd_set*) NULL, &zeroTimeout)); - -- // Currently we rebuild the entire interface list whenever any interface change is -- // detected. If this ever proves to be a performance issue in a multi-homed -- // configuration, more care should be paid to changedInterfaces. -- if (changedInterfaces.Head != NULL) -- mDNSPlatformPosixRefreshInterfaceList(pChgRec->mDNS); -+ CleanRecentInterfaces(); -+ -+ if (changedInterfaces.Head == NULL) goto cleanup; -+ -+ ifi_list = get_ifi_info(AF_INET, mDNStrue); -+ if (ifi_list == NULL) goto cleanup; -+ -+#if HAVE_IPV6 -+ /* Link the IPv6 list to the end of the IPv4 list */ -+ ifi = &ifi_list; -+ while (*ifi != NULL) ifi = &(*ifi)->ifi_next; -+ *ifi = get_ifi_info(AF_INET6, mDNStrue); -+#endif -+ -+ for (intf = (PosixNetworkInterface*)(m->HostInterfaces); intf != NULL; intf = intfNext) -+ { -+ intfNext = (PosixNetworkInterface*)(intf->coreIntf.next); -+ -+ // Loopback interface(s) are handled later -+ if (intf->coreIntf.Loopback) continue; -+ -+ found = mDNSfalse; -+ for (ifi = &ifi_list; *ifi != NULL; ifi = &(*ifi)->ifi_next) -+ { -+ if (InterfacesMatch(intf, *ifi)) -+ { -+ found = mDNStrue; -+ -+ // Removes unchanged from ifi_list -+ ifi_free = *ifi; -+ *ifi = (*ifi)->ifi_next; -+ ifi_free->ifi_next = NULL; -+ free_ifi_info(ifi_free); -+ -+ break; -+ } -+ } -+ -+ // Removes changed and old interfaces from m->HostInterfaces -+ if (!found) TearDownInterface(m, intf); -+ } -+ -+ // Add new and changed interfaces in ifi_list -+ // Save off loopback interface in case it is needed later -+ for (ifi = &ifi_list; *ifi != NULL; ifi = &(*ifi)->ifi_next) -+ { -+ if ((ifi_loop4 == NULL) && -+ ((*ifi)->ifi_addr->sa_family == AF_INET) && -+ ((*ifi)->ifi_flags & IFF_UP) && -+ ((*ifi)->ifi_flags & IFF_LOOPBACK)) -+ { -+ ifi_loop4 = *ifi; -+ continue; -+ } -+ -+ if ( (((*ifi)->ifi_addr->sa_family == AF_INET) -+#if HAVE_IPV6 -+ || ((*ifi)->ifi_addr->sa_family == AF_INET6) -+#endif -+ ) && ((*ifi)->ifi_flags & IFF_UP) -+ && !((*ifi)->ifi_flags & IFF_POINTOPOINT) -+ && !((*ifi)->ifi_flags & IFF_LOOPBACK)) -+ { -+ SetupOneInterface(m, *ifi); -+ } -+ } -+ -+ // Determine if there is at least one non-loopback IPv4 interface. This is to work around issues -+ // with multicast loopback on IPv6 interfaces -- see corresponding logic in SetupInterfaceList(). -+ foundav4 = mDNSfalse; -+ for (intf = (PosixNetworkInterface*)(m->HostInterfaces); intf != NULL; intf = (PosixNetworkInterface*)(intf->coreIntf.next)) -+ { -+ if (intf->sa_family == AF_INET && !intf->coreIntf.Loopback) -+ { -+ foundav4 = mDNStrue; -+ break; -+ } -+ } -+ -+ if (foundav4) -+ { -+ for (intf = (PosixNetworkInterface*)(m->HostInterfaces); intf != NULL; intf = intfNext) -+ { -+ intfNext = (PosixNetworkInterface*)(intf->coreIntf.next); -+ if (intf->coreIntf.Loopback) TearDownInterface(m, intf); -+ } -+ } -+ else -+ { -+ found = mDNSfalse; -+ -+ for (intf = (PosixNetworkInterface*)(m->HostInterfaces); intf != NULL; intf = (PosixNetworkInterface*)(intf->coreIntf.next)) -+ { -+ if (intf->coreIntf.Loopback) -+ { -+ found = mDNStrue; -+ break; -+ } -+ } -+ -+ if (!found && (ifi_loop4 != NULL)) -+ { -+ SetupOneInterface(m, ifi_loop4); -+ } -+ } -+ -+ if (ifi_list != NULL) free_ifi_info(ifi_list); - -+cleanup: - while ((changedInterface = (NetworkInterfaceIndex*)changedInterfaces.Head) != NULL) - { - RemoveFromList(&changedInterfaces, changedInterface); -@@ -1400,15 +1527,11 @@ mDNSexport void mDNSPlatformClose(mDNS *const m) - #endif - } - --// This is used internally by InterfaceChangeCallback. --// It's also exported so that the Standalone Responder (mDNSResponderPosix) -+// This is exported so that the Standalone Responder (mDNSResponderPosix) - // can call it in response to a SIGHUP (mainly for debugging purposes). - mDNSexport mStatus mDNSPlatformPosixRefreshInterfaceList(mDNS *const m) - { - int err; -- // This is a pretty heavyweight way to process interface changes -- -- // destroying the entire interface list and then making fresh one from scratch. -- // We should make it like the OS X version, which leaves unchanged interfaces alone. - ClearInterfaceList(m); - err = SetupInterfaceList(m); - return PosixErrorToStatus(err); --- -2.17.1 - diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0007-Indicate-loopback-interface-to-mDNS-core.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0007-Indicate-loopback-interface-to-mDNS-core.patch deleted file mode 100644 index 86201c650..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0007-Indicate-loopback-interface-to-mDNS-core.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 07a9401d84804d7f0181aa4fb0f13a54b2a1c9a8 Mon Sep 17 00:00:00 2001 -From: Nate Karstens <nate.karstens@garmin.com> -Date: Tue, 1 Aug 2017 17:06:01 -0500 -Subject: [PATCH 07/11] Indicate loopback interface to mDNS core - -Tells the mDNS core if an interface is a loopback interface, -similar to AddInterfaceToList() in the MacOS implementation. -Also reorganizes SetupOneInterface() to use a const struct -rather than growing its parameter list again. - -Upstream-Status: Submitted [dts@apple.com] - -Signed-off-by: Nate Karstens <nate.karstens@garmin.com> ---- - mDNSPosix/mDNSPosix.c | 37 ++++++++++++++++++------------------- - 1 file changed, 18 insertions(+), 19 deletions(-) - -diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c -index 3fc5451..798ab10 100644 ---- a/mDNSPosix/mDNSPosix.c -+++ b/mDNSPosix/mDNSPosix.c -@@ -889,16 +889,14 @@ mDNSlocal void CleanRecentInterfaces(void) - - // Creates a PosixNetworkInterface for the interface whose IP address is - // intfAddr and whose name is intfName and registers it with mDNS core. --mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct sockaddr *intfMask, const char *intfName, int intfIndex) -+mDNSlocal int SetupOneInterface(mDNS *const m, struct ifi_info *const ifi) - { - int err = 0; - PosixNetworkInterface *intf; - PosixNetworkInterface *alias = NULL; - - assert(m != NULL); -- assert(intfAddr != NULL); -- assert(intfName != NULL); -- assert(intfMask != NULL); -+ assert(ifi != NULL); - - // Allocate the interface structure itself. - intf = (PosixNetworkInterface*)calloc(1, sizeof(*intf)); -@@ -907,26 +905,27 @@ mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct - // And make a copy of the intfName. - if (err == 0) - { -- intf->intfName = strdup(intfName); -+ intf->intfName = strdup(ifi->ifi_name); - if (intf->intfName == NULL) { assert(0); err = ENOMEM; } - } - - if (err == 0) - { - // Set up the fields required by the mDNS core. -- SockAddrTomDNSAddr(intfAddr, &intf->coreIntf.ip, NULL); -- SockAddrTomDNSAddr(intfMask, &intf->coreIntf.mask, NULL); -+ SockAddrTomDNSAddr(ifi->ifi_addr, &intf->coreIntf.ip, NULL); -+ SockAddrTomDNSAddr(ifi->ifi_netmask, &intf->coreIntf.mask, NULL); - - //LogMsg("SetupOneInterface: %#a %#a", &intf->coreIntf.ip, &intf->coreIntf.mask); -- strncpy(intf->coreIntf.ifname, intfName, sizeof(intf->coreIntf.ifname)); -+ strncpy(intf->coreIntf.ifname, ifi->ifi_name, sizeof(intf->coreIntf.ifname)); - intf->coreIntf.ifname[sizeof(intf->coreIntf.ifname)-1] = 0; - intf->coreIntf.Advertise = m->AdvertiseLocalAddresses; - intf->coreIntf.McastTxRx = mDNStrue; -+ intf->coreIntf.Loopback = ((ifi->ifi_flags & IFF_LOOPBACK) != 0) ? mDNStrue : mDNSfalse; - - // Set up the extra fields in PosixNetworkInterface. - assert(intf->intfName != NULL); // intf->intfName already set up above -- intf->index = intfIndex; -- intf->sa_family = intfAddr->sa_family; -+ intf->index = ifi->ifi_index; -+ intf->sa_family = ifi->ifi_addr->sa_family; - intf->multicastSocket4 = -1; - #if HAVE_IPV6 - intf->multicastSocket6 = -1; -@@ -936,17 +935,17 @@ mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct - intf->coreIntf.InterfaceID = (mDNSInterfaceID)alias; - - if (alias != intf) -- debugf("SetupOneInterface: %s %#a is an alias of %#a", intfName, &intf->coreIntf.ip, &alias->coreIntf.ip); -+ debugf("SetupOneInterface: %s %#a is an alias of %#a", ifi->ifi_name, &intf->coreIntf.ip, &alias->coreIntf.ip); - } - - // Set up the multicast socket - if (err == 0) - { -- if (alias->multicastSocket4 == -1 && intfAddr->sa_family == AF_INET) -- err = SetupSocket(intfAddr, MulticastDNSPort, intf->index, &alias->multicastSocket4); -+ if (alias->multicastSocket4 == -1 && ifi->ifi_addr->sa_family == AF_INET) -+ err = SetupSocket(ifi->ifi_addr, MulticastDNSPort, intf->index, &alias->multicastSocket4); - #if HAVE_IPV6 -- else if (alias->multicastSocket6 == -1 && intfAddr->sa_family == AF_INET6) -- err = SetupSocket(intfAddr, MulticastDNSPort, intf->index, &alias->multicastSocket6); -+ else if (alias->multicastSocket6 == -1 && ifi->ifi_addr->sa_family == AF_INET6) -+ err = SetupSocket(ifi->ifi_addr, MulticastDNSPort, intf->index, &alias->multicastSocket6); - #endif - } - -@@ -973,8 +972,8 @@ mDNSlocal int SetupOneInterface(mDNS *const m, struct sockaddr *intfAddr, struct - } - else - { -- // Use intfName instead of intf->intfName in the next line to avoid dereferencing NULL. -- debugf("SetupOneInterface: %s %#a failed to register %d", intfName, &intf->coreIntf.ip, err); -+ // Use ifi->ifi_name instead of intf->intfName in the next line to avoid dereferencing NULL. -+ debugf("SetupOneInterface: %s %#a failed to register %d", ifi->ifi_name, &intf->coreIntf.ip, err); - if (intf) { FreePosixNetworkInterface(intf); intf = NULL; } - } - -@@ -1023,7 +1022,7 @@ mDNSlocal int SetupInterfaceList(mDNS *const m) - } - else - { -- if (SetupOneInterface(m, i->ifi_addr, i->ifi_netmask, i->ifi_name, i->ifi_index) == 0) -+ if (SetupOneInterface(m, i) == 0) - if (i->ifi_addr->sa_family == AF_INET) - foundav4 = mDNStrue; - } -@@ -1037,7 +1036,7 @@ mDNSlocal int SetupInterfaceList(mDNS *const m) - // In the interim, we skip loopback interface only if we found at least one v4 interface to use - // if ((m->HostInterfaces == NULL) && (firstLoopback != NULL)) - if (!foundav4 && firstLoopback) -- (void) SetupOneInterface(m, firstLoopback->ifi_addr, firstLoopback->ifi_netmask, firstLoopback->ifi_name, firstLoopback->ifi_index); -+ (void) SetupOneInterface(m, firstLoopback); - } - - // Clean up. --- -2.17.1 - diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0011-Change-a-dynamic-allocation-to-file-scope-variable.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0011-Change-a-dynamic-allocation-to-file-scope-variable.patch index d64fb35db..d9adde04c 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0011-Change-a-dynamic-allocation-to-file-scope-variable.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/0011-Change-a-dynamic-allocation-to-file-scope-variable.patch @@ -1,7 +1,7 @@ -From 19de26db69408f02241e232b39224589a0f630df Mon Sep 17 00:00:00 2001 +From 9ff06108cd44e84ba6c68bfa6737e793f117e303 Mon Sep 17 00:00:00 2001 From: Nate Karstens <nate.karstens@garmin.com> Date: Thu, 10 Aug 2017 08:46:03 -0500 -Subject: [PATCH 11/11] Change a dynamic allocation to file-scope variable +Subject: [PATCH] Change a dynamic allocation to file-scope variable Changes a variable from being dynamically-allocated to being statically-allocated at the file scope. Addresses a Coverity @@ -11,14 +11,14 @@ Upstream-Status: Submitted [dts@apple.com] Signed-off-by: Nate Karstens <nate.karstens@garmin.com> --- - mDNSPosix/mDNSPosix.c | 12 ++++-------- - 1 file changed, 4 insertions(+), 8 deletions(-) + mDNSPosix/mDNSPosix.c | 14 ++++---------- + 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c -index 84af26b..b7795ed 100644 +index 7aeee7b..2d25016 100755 --- a/mDNSPosix/mDNSPosix.c +++ b/mDNSPosix/mDNSPosix.c -@@ -91,6 +91,7 @@ static sigset_t gEventSignalSet; // Signals which event loop list +@@ -81,6 +81,7 @@ static sigset_t gEventSignalSet; // Signals which event loop list static sigset_t gEventSignals; // Signals which were received while inside loop static PosixNetworkInterface *gRecentInterfaces; @@ -26,13 +26,13 @@ index 84af26b..b7795ed 100644 // *************************************************************************** // Globals (for debugging) -@@ -1412,16 +1413,11 @@ cleanup: +@@ -1641,18 +1642,11 @@ mDNSlocal void InterfaceChangeCallback(int fd, void *context) mDNSlocal mStatus WatchForInterfaceChange(mDNS *const m) { mStatus err; - IfChangeRec *pChgRec; -- pChgRec = (IfChangeRec*) mDNSPlatformMemAllocate(sizeof *pChgRec); +- pChgRec = (IfChangeRec*) mDNSPlatformMemAllocateClear(sizeof *pChgRec); - if (pChgRec == NULL) - return mStatus_NoMemoryErr; - @@ -42,10 +42,12 @@ index 84af26b..b7795ed 100644 + err = OpenIfNotifySocket(&gChgRec.NotifySD); if (err == 0) - err = mDNSPosixAddFDToEventLoop(pChgRec->NotifySD, InterfaceChangeCallback, pChgRec); +- if (err) +- mDNSPlatformMemFree(pChgRec); + err = mDNSPosixAddFDToEventLoop(gChgRec.NotifySD, InterfaceChangeCallback, &gChgRec); return err; } -- -2.17.1 +2.20.1 diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/build.patch b/meta-openembedded/meta-networking/recipes-protocols/mdns/files/build.patch deleted file mode 100644 index 4ab9d23bf..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/files/build.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 43b6e98c9c37afd0d914949dcff4eab81f5a995f Mon Sep 17 00:00:00 2001 -From: Brendan Le Foll <brendan.le.foll@intel.com> -Date: Tue, 3 Mar 2015 11:42:57 +0000 - -Upstream-Status: Inappropriate [OE-specific] - -Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> - ---- - mDNSPosix/Makefile | 54 +++++++++++++++++++++++++----------------------------- - 1 file changed, 25 insertions(+), 29 deletions(-) - -diff --git a/mDNSPosix/Makefile b/mDNSPosix/Makefile -index 4f98e90..8ac97ad 100755 ---- a/mDNSPosix/Makefile -+++ b/mDNSPosix/Makefile -@@ -50,6 +50,7 @@ - - LIBVERS = 1 - -+POSIXDIR = ../mDNSPosix - COREDIR = ../mDNSCore - SHAREDDIR ?= ../mDNSShared - JDK = /usr/jdk -@@ -58,11 +59,11 @@ CC = @cc - BISON = @bison - FLEX = @flex - ST = @strip --LD = ld -shared -+LD =@LD - CP = cp - RM = rm - LN = ln -s -f --CFLAGS_COMMON = -I$(COREDIR) -I$(SHAREDDIR) -I$(OBJDIR) -fwrapv -W -Wall -DPID_FILE=\"/var/run/mdnsd.pid\" -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" -+CFLAGS_COMMON = -I$(POSIXDIR) -I$(COREDIR) -I$(SHAREDDIR) -I$(OBJDIR) -fwrapv -W -Wall -DPID_FILE=\"/var/run/mdnsd.pid\" -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" - CFLAGS_PTHREAD = - LINKOPTS = - LINKOPTS_PTHREAD = -lpthread -@@ -70,7 +71,7 @@ LDSUFFIX = so - JAVACFLAGS_OS = -fPIC -shared -ldns_sd - - # Set up diverging paths for debug vs. prod builds --DEBUG=0 -+DEBUG?=1 - ifeq ($(DEBUG),1) - CFLAGS_DEBUG = -g -DMDNS_DEBUGMSGS=2 - OBJDIR = objects/debug -@@ -213,7 +214,7 @@ endif - endif - endif - --CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_OS) $(CFLAGS_DEBUG) -+CFLAGS_BUILD = $(CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_OS) $(CFLAGS_DEBUG) - - ############################################################################# - -@@ -249,8 +250,7 @@ Daemon: setup $(BUILDDIR)/mdnsd - @echo "Responder daemon done" - - $(BUILDDIR)/mdnsd: $(DAEMONOBJS) -- $(CC) -o $@ $+ $(LINKOPTS) -- @$(STRIP) $@ -+ $(CC) -o $@ $+ - - # libdns_sd target builds the client library - libdns_sd: setup $(BUILDDIR)/libdns_sd.$(LDSUFFIX) -@@ -259,22 +259,18 @@ libdns_sd: setup $(BUILDDIR)/libdns_sd.$(LDSUFFIX) - CLIENTLIBOBJS = $(OBJDIR)/dnssd_clientlib.c.so.o $(OBJDIR)/dnssd_clientstub.c.so.o $(OBJDIR)/dnssd_ipc.c.so.o - - $(BUILDDIR)/libdns_sd.$(LDSUFFIX): $(CLIENTLIBOBJS) -- @$(LD) $(LINKOPTS) -o $@ $+ -- @$(STRIP) $@ -+ $(LD) -shared $(LINKOPTS) -Wl,-soname,libdns_sd.$(LDSUFFIX).1 -o $@ $+ - --Clients: setup libdns_sd ../Clients/build/dns-sd -+Clients: setup libdns_sd -+ @$(MAKE) -C ../Clients DEBUG=${DEBUG} - @echo "Clients done" - --../Clients/build/dns-sd: -- @$(MAKE) -C ../Clients -- - # nss_mdns target builds the Name Service Switch module - nss_mdns: setup $(BUILDDIR)/$(NSSLIBFILE) - @echo "Name Service Switch module done" - - $(BUILDDIR)/$(NSSLIBFILE): $(CLIENTLIBOBJS) $(OBJDIR)/nss_mdns.c.so.o -- @$(LD) $(LINKOPTS) -o $@ $+ -- @$(STRIP) $@ -+ $(LD) -shared $(LINKOPTS) -o $@ $+ - - ############################################################################# - -@@ -470,55 +466,55 @@ dnsextd: setup $(BUILDDIR)/dnsextd - @echo "dnsextd done" - - $(BUILDDIR)/mDNSClientPosix: $(APPOBJ) $(OBJDIR)/Client.c.o -- $(CC) $+ -o $@ $(LINKOPTS) -+ $(CC) $+ -o $@ - - $(BUILDDIR)/mDNSResponderPosix: $(COMMONOBJ) $(OBJDIR)/Responder.c.o -- $(CC) $+ -o $@ $(LINKOPTS) -+ $(CC) $+ -o $@ - - $(BUILDDIR)/mDNSProxyResponderPosix: $(COMMONOBJ) $(OBJDIR)/ProxyResponder.c.o -- $(CC) $+ -o $@ $(LINKOPTS) -+ $(CC) $+ -o $@ - - $(BUILDDIR)/mDNSIdentify: $(SPECIALOBJ) $(OBJDIR)/Identify.c.o -- $(CC) $+ -o $@ $(LINKOPTS) -+ $(CC) $+ -o $@ - - $(OBJDIR)/Identify.c.o: $(COREDIR)/mDNS.c # Note: Identify.c textually imports mDNS.c - - $(BUILDDIR)/mDNSNetMonitor: $(SPECIALOBJ) $(OBJDIR)/NetMonitor.c.o -- $(CC) $+ -o $@ $(LINKOPTS) -+ $(CC) $+ -o $@ - - $(OBJDIR)/NetMonitor.c.o: $(COREDIR)/mDNS.c # Note: NetMonitor.c textually imports mDNS.c - - $(BUILDDIR)/dnsextd: $(DNSEXTDOBJ) $(OBJDIR)/dnsextd.c.threadsafe.o -- $(CC) $+ -o $@ $(LINKOPTS) $(LINKOPTS_PTHREAD) -+ $(CC) $+ -o $@ $(LINKOPTS_PTHREAD) - - ############################################################################# - - # Implicit rules - $(OBJDIR)/%.c.o: %.c -- $(CC) $(CFLAGS) -c -o $@ $< -+ $(CC) $(CFLAGS_BUILD) -c -o $@ $< - - $(OBJDIR)/%.c.o: $(COREDIR)/%.c -- $(CC) $(CFLAGS) -c -o $@ $< -+ $(CC) $(CFLAGS_BUILD) -c -o $@ $< - - $(OBJDIR)/%.c.o: $(SHAREDDIR)/%.c -- $(CC) $(CFLAGS) -c -o $@ $< -+ $(CC) $(CFLAGS_BUILD) -c -o $@ $< - - $(OBJDIR)/%.c.threadsafe.o: %.c -- $(CC) $(CFLAGS) $(CFLAGS_PTHREAD) -D_REENTRANT -c -o $@ $< -+ $(CC) $(CFLAGS_BUILD) $(CFLAGS_PTHREAD) -D_REENTRANT -c -o $@ $< - - $(OBJDIR)/%.c.threadsafe.o: $(SHAREDDIR)/%.c -- $(CC) $(CFLAGS) $(CFLAGS_PTHREAD) -D_REENTRANT -c -o $@ $< -+ $(CC) $(CFLAGS_BUILD) $(CFLAGS_PTHREAD) -D_REENTRANT -c -o $@ $< - - $(OBJDIR)/%.c.so.o: %.c -- $(CC) $(CFLAGS) -c -fPIC -o $@ $< -+ $(CC) $(CFLAGS_BUILD) -c -fPIC -o $@ $< - - $(OBJDIR)/%.c.so.o: $(SHAREDDIR)/%.c -- $(CC) $(CFLAGS) -c -fPIC -o $@ $< -+ $(CC) $(CFLAGS_BUILD) -c -fPIC -o $@ $< - - $(OBJDIR)/%.y.o: $(SHAREDDIR)/%.y - $(BISON) -o $(OBJDIR)/$*.c -d $< -- $(CC) $(CFLAGS) -c -o $@ $(OBJDIR)/$*.c -+ $(CC) $(CFLAGS_BUILD) -c -o $@ $(OBJDIR)/$*.c - - $(OBJDIR)/%.l.o: $(SHAREDDIR)/%.l - $(FLEX) $(FLEXFLAGS_OS) -i -o$(OBJDIR)/$*.l.c $< -- $(CC) $(CFLAGS) -Wno-error -c -o $@ $(OBJDIR)/$*.l.c -+ $(CC) $(CFLAGS_BUILD) -Wno-error -c -o $@ $(OBJDIR)/$*.l.c --- -2.9.5 - diff --git a/meta-openembedded/meta-networking/recipes-protocols/mdns/mdns_878.270.2.bb b/meta-openembedded/meta-networking/recipes-protocols/mdns/mdns_1096.40.7.bb index 0f8dc92df..086b40869 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/mdns/mdns_878.270.2.bb +++ b/meta-openembedded/meta-networking/recipes-protocols/mdns/mdns_1096.40.7.bb @@ -1,7 +1,7 @@ SUMMARY = "Publishes & browses available services on a link according to the Zeroconf / Bonjour protocol" DESCRIPTION = "Bonjour, also known as zero-configuration networking, enables automatic discovery of computers, devices, and services on IP networks." HOMEPAGE = "http://developer.apple.com/networking/bonjour/" -LICENSE = "Apache-2.0" +LICENSE = "Apache-2.0 & BSD-3-Clause" LIC_FILES_CHKSUM = "file://../LICENSE;md5=31c50371921e0fb731003bbc665f29bf" COMPATIBLE_HOST_libc-musl = 'null' @@ -9,22 +9,23 @@ COMPATIBLE_HOST_libc-musl = 'null' RPROVIDES_${PN} += "libdns_sd.so" SRC_URI = "https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-${PV}.tar.gz \ - file://build.patch;patchdir=.. \ file://mdns.service \ + file://0001-mdns-include-stddef.h-for-NULL.patch;patchdir=.. \ + file://0002-mdns-cross-compilation-fixes-for-bitbake.patch;patchdir=.. \ file://0001-Create-subroutine-for-cleaning-recent-interfaces.patch;patchdir=.. \ file://0002-Create-subroutine-for-tearing-down-an-interface.patch;patchdir=.. \ file://0003-Track-interface-socket-family.patch;patchdir=.. \ file://0004-Use-list-for-changed-interfaces.patch;patchdir=.. \ - file://0005-Handle-noisy-netlink-sockets.patch;patchdir=.. \ file://0006-Remove-unneeded-function.patch;patchdir=.. \ - file://0007-Indicate-loopback-interface-to-mDNS-core.patch;patchdir=.. \ file://0008-Mark-deleted-interfaces-as-being-changed.patch;patchdir=.. \ file://0009-Fix-possible-NULL-dereference.patch;patchdir=.. \ file://0010-Handle-errors-from-socket-calls.patch;patchdir=.. \ file://0011-Change-a-dynamic-allocation-to-file-scope-variable.patch;patchdir=.. \ " -SRC_URI[md5sum] = "4e139a8e1133349006b0436291c9e29b" -SRC_URI[sha256sum] = "2cef0ee9900504c5277fb81de0a28e6c0835fe482ebecf1067c6864f5c4eda74" +SRC_URI[md5sum] = "ac766013bbcb323e9db4c80805b2552a" +SRC_URI[sha256sum] = "b86f4816b4145915198e7c5bf0bc56dbbfd960e9a4518bb6486baa40cdcca7e6" + +CVE_PRODUCT = "apple:mdnsresponder" PARALLEL_MAKE = "" diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-pkg-config-support-for-building-applications-and.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-pkg-config-support-for-building-applications-and.patch deleted file mode 100644 index dd159b9ce..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-pkg-config-support-for-building-applications-and.patch +++ /dev/null @@ -1,168 +0,0 @@ -From 4bf83597379523032663c8e95b3786a217c9a849 Mon Sep 17 00:00:00 2001 -From: Hugh McMaster <hugh.mcmaster@outlook.com> -Date: Wed, 3 Apr 2019 21:36:03 +1100 -Subject: [PATCH] Add pkg-config support for building applications and - sub-agents - -The netsnmp package should be used when building Net-SNMP applications. -The netsnmp-agent package should be used when building Net-SNMP subagents. - -Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com> -[ bvanassche: edited makefile code and .pc files; added ./configure changes ] - -Upstream-Status: Backport -https://sourceforge.net/p/net-snmp/patches/_discuss/thread/a0d66e91dd/f940/attachment/0001-Add-pkg-config-support-for-building-applications-and.patch ---- - Makefile.in | 2 ++ - Makefile.rules | 30 ++++++++++++++++++++++++++---- - configure | 4 ++++ - configure.ac | 1 + - netsnmp-agent.pc.in | 12 ++++++++++++ - netsnmp.pc.in | 12 ++++++++++++ - 6 files changed, 57 insertions(+), 4 deletions(-) - create mode 100644 netsnmp-agent.pc.in - create mode 100644 netsnmp.pc.in - -diff --git a/Makefile.in b/Makefile.in -index 9dbdde1353..ec972636c2 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -35,6 +35,7 @@ INSTALLBUILTHEADERS=include/net-snmp/net-snmp-config.h - INSTALLBUILTINCLUDEHEADERS=@FEATUREHEADERS@ - INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user - INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h -+INSTALL_PKGCONFIG=netsnmp.pc netsnmp-agent.pc - - # - # other install rules. -@@ -275,6 +276,7 @@ configclean: makefileclean - libtool include/net-snmp/net-snmp-config.h \ - net-snmp-config net-snmp-config-x configure-summary \ - net-snmp-create-v3-user net-snmp-create-v3-user-x -+ rm -f *.pc - rm -f mibs/.index - rm -f include/net-snmp/agent/mib_module_config.h \ - include/net-snmp/agent/agent_module_config.h \ -diff --git a/Makefile.rules b/Makefile.rules -index 9e9e9009e5..e714f91e72 100644 ---- a/Makefile.rules -+++ b/Makefile.rules -@@ -85,12 +85,14 @@ subdirs: - # installlibs handles local, ucd and subdir libs. need to do subdir libs - # before bins, sinze those libs may be needed for successful linking - install: installlocalheaders @installucdheaders@ \ -- installlibs \ -- installlocalbin installlocalsbin \ -+ installlibs install_pkgconfig \ -+ installlocalbin installlocalsbin \ - installsubdirs $(OTHERINSTALL) - --uninstall: uninstalllibs uninstallbin uninstallsbin uninstallheaders \ -- uninstallsubdirs $(OTHERUNINSTALL) -+uninstall: uninstalllibs uninstall_pkgconfig \ -+ uninstallbin uninstallsbin \ -+ uninstallheaders \ -+ uninstallsubdirs $(OTHERUNINSTALL) - - installprogs: installbin installsbin - -@@ -287,6 +289,26 @@ uninstalllibs: - done \ - fi - -+# -+# pkg-config files -+# -+install_pkgconfig: $(INSTALL_PKGCONFIG) -+ @if test "x$(INSTALL_PKGCONFIG)" != x; then \ -+ $(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(libdir)/pkgconfig; \ -+ for i in $(INSTALL_PKGCONFIG); do \ -+ echo "installing $$i in $(INSTALL_PREFIX)$(libdir)/pkgconfig"; \ -+ done; \ -+ $(INSTALL) $(INSTALL_PKGCONFIG) $(INSTALL_PREFIX)$(libdir)/pkgconfig; \ -+ fi -+ -+uninstall_pkgconfig: -+ @if test "x$(INSTALL_PKGCONFIG)" != x; then \ -+ for i in $(INSTALL_PKGCONFIG); do \ -+ echo "removing $$i from $(INSTALL_PREFIX)$(libdir)/pkgconfig"; \ -+ $(UNINSTALL) $(INSTALL_PREFIX)$(libdir)/pkgconfig/$$i;\ -+ done; \ -+ fi -+ - # - # normal bin binaries - # -diff --git a/configure b/configure -index cad6b74486..8909bffe05 100755 ---- a/configure -+++ b/configure -@@ -31717,6 +31717,8 @@ ac_config_files="$ac_config_files net-snmp-config:net-snmp-config.in" - - ac_config_files="$ac_config_files net-snmp-create-v3-user:net-snmp-create-v3-user.in" - -+ac_config_files="$ac_config_files netsnmp.pc:netsnmp.pc.in netsnmp-agent.pc:netsnmp-agent.pc.in" -+ - ac_config_files="$ac_config_files dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in" - - ac_config_files="$ac_config_files local/snmpconf" -@@ -32740,6 +32742,8 @@ do - "mibs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules" ;; - "net-snmp-config") CONFIG_FILES="$CONFIG_FILES net-snmp-config:net-snmp-config.in" ;; - "net-snmp-create-v3-user") CONFIG_FILES="$CONFIG_FILES net-snmp-create-v3-user:net-snmp-create-v3-user.in" ;; -+ "netsnmp.pc") CONFIG_FILES="$CONFIG_FILES netsnmp.pc:netsnmp.pc.in" ;; -+ "netsnmp-agent.pc") CONFIG_FILES="$CONFIG_FILES netsnmp-agent.pc:netsnmp-agent.pc.in" ;; - "dist/generation-scripts/gen-variables") CONFIG_FILES="$CONFIG_FILES dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in" ;; - "local/snmpconf") CONFIG_FILES="$CONFIG_FILES local/snmpconf" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; -diff --git a/configure.ac b/configure.ac -index 1622b7c051..898b50f368 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -118,6 +118,7 @@ AC_CONFIG_FILES([net-snmp-config:net-snmp-config.in], - [chmod +x net-snmp-config]) - AC_CONFIG_FILES([net-snmp-create-v3-user:net-snmp-create-v3-user.in], - [chmod +x net-snmp-create-v3-user]) -+AC_CONFIG_FILES([netsnmp.pc:netsnmp.pc.in netsnmp-agent.pc:netsnmp-agent.pc.in]) - AC_CONFIG_FILES([dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in]) - AC_CONFIG_FILES([local/snmpconf]) - -diff --git a/netsnmp-agent.pc.in b/netsnmp-agent.pc.in -new file mode 100644 -index 0000000000..3a1c77bbf8 ---- /dev/null -+++ b/netsnmp-agent.pc.in -@@ -0,0 +1,12 @@ -+prefix=@prefix@ -+exec_prefix=@exec_prefix@ -+includedir=@includedir@ -+libdir=@libdir@ -+ -+Name: netsnmp-agent (@PACKAGE_NAME@) -+Description: SNMP (Simple Network Management Protocol) sub-agent SDK. -+URL: http://www.net-snmp.org -+Version: @PACKAGE_VERSION@ -+Cflags: -I${includedir} -+Libs: -L${libdir} -lnetsnmpmibs -lnetsnmpagent -lnetsnmp -+Libs.private: @LDFLAGS@ @LMIBLIBS@ @LAGENTLIBS@ @PERLLDOPTS_FOR_APPS@ @LNETSNMPLIBS@ @LIBS@ -diff --git a/netsnmp.pc.in b/netsnmp.pc.in -new file mode 100644 -index 0000000000..0a1f5785a4 ---- /dev/null -+++ b/netsnmp.pc.in -@@ -0,0 +1,12 @@ -+prefix=@prefix@ -+exec_prefix=@exec_prefix@ -+includedir=@includedir@ -+libdir=@libdir@ -+ -+Name: netsnmp (@PACKAGE_NAME@) -+Description: SNMP (Simple Network Management Protocol) daemon and applications. -+URL: http://www.net-snmp.org -+Version: @PACKAGE_VERSION@ -+Cflags: -I${includedir} -+Libs: -L${libdir} -lnetsnmp -+Libs.private: @LDFLAGS@ @LNETSNMPLIBS@ @LIBS@ @PERLLDOPTS_FOR_APPS@ --- -2.26.2 - diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch index 5ad7470c9..05a47f61c 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch @@ -1,4 +1,4 @@ -From 2ad4df6d503be72a8910c3087611adb33d77ffde Mon Sep 17 00:00:00 2001 +From 69d4c517c07f55c505090e48d96ace8cd599fb26 Mon Sep 17 00:00:00 2001 From: Li xin <lixin.fnst@cn.fujitsu.com> Date: Fri, 21 Aug 2015 18:23:13 +0900 Subject: [PATCH] config_os_headers: Error Fix @@ -13,15 +13,16 @@ conftest.c:168:17: fatal error: pkg.h: No such file or directory Upstream-Status: pending Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com> + --- configure.d/config_os_headers | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers -index 2fdb5a35d6..0272f02c8e 100644 +index f07d512..2363b42 100644 --- a/configure.d/config_os_headers +++ b/configure.d/config_os_headers -@@ -487,8 +487,8 @@ then +@@ -395,8 +395,8 @@ then unset ac_cv_header_pkg_h netsnmp_save_CPPFLAGS="$CPPFLAGS" netsnmp_save_LDFLAGS="$LDFLAGS" @@ -32,6 +33,3 @@ index 2fdb5a35d6..0272f02c8e 100644 AC_CHECK_HEADERS(pkg.h, NETSNMP_SEARCH_LIBS(pkg_init, pkg, AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng]))) --- -2.26.2 - diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch index bf133b3e3..22e591556 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch @@ -1,4 +1,4 @@ -From 98c6edba4835b515d933542411d80879327eee16 Mon Sep 17 00:00:00 2001 +From 2bf1bbe1d428ed06d57aa76b03e394b72ff2216d Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 22 Jul 2016 18:34:39 +0000 Subject: [PATCH] get_pid_from_inode: Include limit.h diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-net-snmp-fix-compile-error-disable-des.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-net-snmp-fix-compile-error-disable-des.patch deleted file mode 100644 index 33a1e745f..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-net-snmp-fix-compile-error-disable-des.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 383e67e359b89abe0440597ce414297892ade511 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Tue, 26 Feb 2019 14:26:07 +0800 -Subject: [PATCH] net-snmp: fix compile error with --disable-des - -| scapi.c: In function 'sc_encrypt': -| scapi.c:1256:5: error: 'pad_size' undeclared (first use in this function); did you mean 'dysize'? -| pad_size = pai->pad_size; -| ^~~~~~~~ -| dysize - -pad_size is defined only without --disable-des -[snip] -#ifndef NETSNMP_DISABLE_DES - int pad, plast, pad_size = 0; - -but used when disable-des, -[snip] - QUITFUN(SNMPERR_GENERR, sc_encrypt_quit); - } - pad_size = pai->pad_size; - - memset(my_iv, 0, sizeof(my_iv)); - -#ifndef NETSNMP_DISABLE_DES - if (USM_CREATE_USER_PRIV_DES == (pai->type & USM_PRIV_MASK_ALG)) { - - /* - -fix by move it into #ifndef NETSNMP_DISABLE_DES - -Upstream-Status: Submitted [https://sourceforge.net/p/net-snmp/bugs/2927/] - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - snmplib/scapi.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/snmplib/scapi.c b/snmplib/scapi.c -index 8ad1d70d90..8c6882d9ab 100644 ---- a/snmplib/scapi.c -+++ b/snmplib/scapi.c -@@ -1251,7 +1251,6 @@ sc_encrypt(const oid * privtype, size_t privtypelen, - - QUITFUN(SNMPERR_GENERR, sc_encrypt_quit); - } -- pad_size = pai->pad_size; - - memset(my_iv, 0, sizeof(my_iv)); - -@@ -1261,6 +1260,8 @@ sc_encrypt(const oid * privtype, size_t privtypelen, - /* - * now calculate the padding needed - */ -+ -+ pad_size = pai->pad_size; - pad = pad_size - (ptlen % pad_size); - plast = (int) ptlen - (pad_size - pad); - if (pad == pad_size) --- -2.26.2 - diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch index 778b40188..42352a6b0 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch @@ -1,4 +1,4 @@ -From 89538a973119f1bf976b3a6df157ea940cf32eb5 Mon Sep 17 00:00:00 2001 +From f3ff99736b8cccbba77349b0d10a3cee366a4c87 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 18 Sep 2015 00:28:45 -0400 Subject: [PATCH] snmplib/keytools.c: Don't check for return from @@ -10,22 +10,25 @@ EVP_MD_CTX_init() API returns void, it fixes errors with new compilers snmplib/keytools.c: In function 'generate_Ku': error: invalid use of void expression Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> --- - snmplib/keytools.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + snmplib/keytools.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/snmplib/keytools.c b/snmplib/keytools.c -index 2cf0240..50fd3ea 100644 +index 129a7c0..2fc1efc 100644 --- a/snmplib/keytools.c +++ b/snmplib/keytools.c -@@ -186,8 +186,7 @@ generate_Ku(const oid * hashtype, u_int hashtype_len, +@@ -183,10 +183,7 @@ generate_Ku(const oid * hashtype, u_int hashtype_len, ctx = EVP_MD_CTX_create(); #else ctx = malloc(sizeof(*ctx)); -- if (!EVP_MD_CTX_init(ctx)) -- return SNMPERR_GENERR; +- if (!EVP_MD_CTX_init(ctx)) { +- rval = SNMPERR_GENERR; +- goto generate_Ku_quit; +- } + EVP_MD_CTX_init(ctx); #endif - if (!EVP_DigestInit(ctx, hashfn)) - return SNMPERR_GENERR; + if (!EVP_DigestInit(ctx, hashfn)) { + rval = SNMPERR_GENERR; diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-configure-fix-a-cc-check-issue.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-configure-fix-a-cc-check-issue.patch index 4782714d5..c973bde72 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-configure-fix-a-cc-check-issue.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-configure-fix-a-cc-check-issue.patch @@ -1,7 +1,7 @@ -From a3631df3d6743113e1cd63579925e15bcce85868 Mon Sep 17 00:00:00 2001 +From 0a02ac779c51a2b4af3b58cb96967bf3eff80367 Mon Sep 17 00:00:00 2001 From: Wenlin Kang <wenlin.kang@windriver.com> Date: Wed, 24 May 2017 16:45:34 +0800 -Subject: [PATCH 2/4] configure: fix a cc check issue. +Subject: [PATCH] configure: fix a cc check issue. When has "." in cc value, the expression $myperl -V:cc | $myperl -n -e 'print if (s/^\s*cc=.([-=\w\s\/]+).;\s*/$1/);' diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch index a3d84b291..bfddc63dd 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch @@ -1,7 +1,7 @@ -From f3c5cd4df7ce8e5639c99b7b918e41fb89e969e3 Mon Sep 17 00:00:00 2001 +From 011bdcd07f2a289d0cfc1b411c03c0cc7c42dad1 Mon Sep 17 00:00:00 2001 From: Wenlin Kang <wenlin.kang@windriver.com> Date: Wed, 24 May 2017 17:10:20 +0800 -Subject: [PATCH 4/4] configure: fix incorrect variable +Subject: [PATCH] configure: fix incorrect variable For cross compile platform, this variable will not be correct, so fix it. @@ -14,10 +14,10 @@ Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in -index 9dbdde1..5fdc760 100644 +index 912f6b2..a53d1b2 100644 --- a/Makefile.in +++ b/Makefile.in -@@ -173,7 +173,7 @@ OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pyt +@@ -174,7 +174,7 @@ OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pyt # # override LD_RUN_PATH to avoid dependencies on the build directory perlmodules: perlmakefiles subdirs diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/CVE-2019-20892.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/CVE-2019-20892.patch deleted file mode 100644 index ec1b6de8f..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/CVE-2019-20892.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 5f881d3bf24599b90d67a45cae7a3eb099cd71c9 Mon Sep 17 00:00:00 2001 -From: Bart Van Assche <bvanassche@acm.org> -Date: Sat, 27 Jul 2019 19:34:09 -0700 -Subject: [PATCH] libsnmp, USM: Introduce a reference count in struct - usmStateReference - -This patch fixes https://sourceforge.net/p/net-snmp/bugs/2956/. - -Upstream-Status: Backport -[ak: fixup for 5.8 context, changes to library/snmpusm.h] - -CVE: CVE-2019-20892 - -Signed-off-by: Armin Kuster <akuster@mvista.com> -Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com> - ---- - snmplib/snmp_client.c | 22 +++---------- - snmplib/snmpusm.c | 73 ++++++++++++++++++++++++++++--------------- - 2 files changed, 53 insertions(+), 42 deletions(-) - -Index: net-snmp-5.8/snmplib/snmpusm.c -=================================================================== ---- net-snmp-5.8.orig/snmplib/snmpusm.c -+++ net-snmp-5.8/snmplib/snmpusm.c -@@ -285,12 +285,35 @@ free_enginetime_on_shutdown(int majorid, - struct usmStateReference * - usm_malloc_usmStateReference(void) - { -- struct usmStateReference *retval = (struct usmStateReference *) -- calloc(1, sizeof(struct usmStateReference)); -+ struct usmStateReference *retval; - -+ retval = calloc(1, sizeof(struct usmStateReference)); -+ if (retval) -+ retval->refcnt = 1; - return retval; - } /* end usm_malloc_usmStateReference() */ - -+static int -+usm_clone(netsnmp_pdu *pdu, netsnmp_pdu *new_pdu) -+{ -+ struct usmStateReference *ref = pdu->securityStateRef; -+ struct usmStateReference **new_ref = -+ (struct usmStateReference **)&new_pdu->securityStateRef; -+ int ret = 0; -+ -+ if (!ref) -+ return ret; -+ -+ if (pdu->command == SNMP_MSG_TRAP2) { -+ netsnmp_assert(pdu->securityModel == SNMP_DEFAULT_SECMODEL); -+ ret = usm_clone_usmStateReference(ref, new_ref); -+ } else { -+ netsnmp_assert(ref == *new_ref); -+ ref->refcnt++; -+ } -+ -+ return ret; -+} - - void - usm_free_usmStateReference(void *old) -@@ -3345,6 +3368,7 @@ init_usm(void) - def->encode_reverse = usm_secmod_rgenerate_out_msg; - def->encode_forward = usm_secmod_generate_out_msg; - def->decode = usm_secmod_process_in_msg; -+ def->pdu_clone = usm_clone; - def->pdu_free_state_ref = usm_free_usmStateReference; - def->session_setup = usm_session_init; - def->handle_report = usm_handle_report; -Index: net-snmp-5.8/snmplib/snmp_client.c -=================================================================== ---- net-snmp-5.8.orig/snmplib/snmp_client.c -+++ net-snmp-5.8/snmplib/snmp_client.c -@@ -402,27 +402,15 @@ _clone_pdu_header(netsnmp_pdu *pdu) - return NULL; - } - -- if (pdu->securityStateRef && -- pdu->command == SNMP_MSG_TRAP2) { -- -- ret = usm_clone_usmStateReference((struct usmStateReference *) pdu->securityStateRef, -- (struct usmStateReference **) &newpdu->securityStateRef ); -- -- if (ret) -- { -+ sptr = find_sec_mod(newpdu->securityModel); -+ if (sptr && sptr->pdu_clone) { -+ /* call security model if it needs to know about this */ -+ ret = sptr->pdu_clone(pdu, newpdu); -+ if (ret) { - snmp_free_pdu(newpdu); - return NULL; - } - } -- -- if ((sptr = find_sec_mod(newpdu->securityModel)) != NULL && -- sptr->pdu_clone != NULL) { -- /* -- * call security model if it needs to know about this -- */ -- (*sptr->pdu_clone) (pdu, newpdu); -- } -- - return newpdu; - } - -Index: net-snmp-5.8/include/net-snmp/library/snmpusm.h -=================================================================== ---- net-snmp-5.8.orig/include/net-snmp/library/snmpusm.h -+++ net-snmp-5.8/include/net-snmp/library/snmpusm.h -@@ -43,6 +43,7 @@ extern "C" { - * Structures. - */ - struct usmStateReference { -+ int refcnt; - char *usr_name; - size_t usr_name_length; - u_char *usr_engine_id; diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch index fc3ac2a4b..26dd014ce 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch @@ -1,4 +1,4 @@ -From 0becb4843a40910d5ec9aa11969d4905a22037cf Mon Sep 17 00:00:00 2001 +From 27444fbf8323679ea0551a3bd5f04c365143d8c0 Mon Sep 17 00:00:00 2001 From: "Roy.Li" <rongqing.li@windriver.com> Date: Fri, 16 Jan 2015 14:14:01 +0800 Subject: [PATCH] net-snmp: fix "libtool --finish" @@ -20,7 +20,7 @@ Signed-off-by: Roy.Li <rongqing.li@windriver.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.top b/Makefile.top -index 5d4f9bc..d0ed31c 100644 +index 6315401..fc0ee06 100644 --- a/Makefile.top +++ b/Makefile.top @@ -89,7 +89,7 @@ LIBREVISION = 0 diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch index 5cbb60d8e..da6d80ef4 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch @@ -1,4 +1,4 @@ -From d619cd9fc01f336ff0ff55b18f9112789eb4d84c Mon Sep 17 00:00:00 2001 +From b6a3d6c8af35f1ef27b80b0516742fce89f4eb29 Mon Sep 17 00:00:00 2001 From: Marian Florea <marian.florea@windriver.com> Date: Thu, 20 Jul 2017 16:55:24 +0800 Subject: [PATCH] net snmp: fix engineBoots value on SIGHUP @@ -14,10 +14,10 @@ Signed-off-by: Li Zhou <li.zhou@windriver.com> 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/agent/snmpd.c b/agent/snmpd.c -index 6566354..eb0d4b4 100644 +index ae73eda..66b4560 100644 --- a/agent/snmpd.c +++ b/agent/snmpd.c -@@ -1239,6 +1239,7 @@ receive(void) +@@ -1207,6 +1207,7 @@ receive(void) snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n", netsnmp_get_version()); update_config(); @@ -26,10 +26,10 @@ index 6566354..eb0d4b4 100644 #if HAVE_SIGHOLD sigrelse(SIGHUP); diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c -index 771ba3b..5de05e7 100644 +index 29c2a0f..ada961c 100644 --- a/snmplib/snmpv3.c +++ b/snmplib/snmpv3.c -@@ -1060,9 +1060,9 @@ init_snmpv3_post_config(int majorid, int minorid, void *serverarg, +@@ -1059,9 +1059,9 @@ init_snmpv3_post_config(int majorid, int minorid, void *serverarg, /* * if our engineID has changed at all, the boots record must be set to 1 */ diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch index fb773e638..f1ebe2bb6 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch @@ -1,4 +1,4 @@ -From a1134a31d417cc05a1fdb094f613a00a7a5e7ac5 Mon Sep 17 00:00:00 2001 +From e507dcf8b29c55011f85d88bf05400d4717e4074 Mon Sep 17 00:00:00 2001 From: Chong Lu <Chong.Lu@windriver.com> Date: Thu, 28 May 2020 09:46:34 -0500 Subject: [PATCH] net-snmp: add knob whether nlist.h are checked @@ -9,30 +9,28 @@ Add knob to decide whether nlist.h are checked or not. Upstream-status: Pending Signed-off-by: Chong Lu <Chong.Lu@windriver.com> + --- configure.d/config_os_headers | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers -index 2fdb5a35d6..af997461d5 100644 +index 76ef58a..f07d512 100644 --- a/configure.d/config_os_headers +++ b/configure.d/config_os_headers -@@ -32,6 +32,7 @@ AC_CHECK_HEADERS([getopt.h pthread.h regex.h ] dnl - [sys/un.h ]) +@@ -37,6 +37,7 @@ AC_CHECK_HEADERS([getopt.h pthread.h regex.h ] dnl + [sys/timeb.h ]) # Library and Agent: +if test "x$with_elf" != "xno"; then AC_CHECK_HEADERS([nlist.h],,,[ AC_INCLUDES_DEFAULT [ -@@ -39,6 +40,7 @@ AC_INCLUDES_DEFAULT +@@ -44,6 +45,7 @@ AC_INCLUDES_DEFAULT #define LIBBSD_DISABLE_DEPRECATED 1 #endif ]]) +fi # Library: - AC_CHECK_HEADERS([fcntl.h io.h kstat.h ] dnl --- -2.26.2 - + AC_CHECK_HEADERS([crt_externs.h ] dnl diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch index 4cd8fd1e4..2941a3609 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch @@ -1,4 +1,4 @@ -From 068952c0e0cdda5a91250b91c5fcc9b85b43daab Mon Sep 17 00:00:00 2001 +From 3ca4335ec1d6b7b384c134fc85d7a9e513c68376 Mon Sep 17 00:00:00 2001 From: Jackie Huang <jackie.huang@windriver.com> Date: Thu, 22 Jun 2017 10:25:08 +0800 Subject: [PATCH] net-snmp: fix for --disable-des @@ -15,10 +15,10 @@ Signed-off-by: Jackie Huang <jackie.huang@windriver.com> 1 file changed, 2 insertions(+) diff --git a/snmplib/scapi.c b/snmplib/scapi.c -index 8ad1d70..43caddf 100644 +index 00c9174..c6875e1 100644 --- a/snmplib/scapi.c +++ b/snmplib/scapi.c -@@ -84,7 +84,9 @@ netsnmp_feature_child_of(usm_scapi, usm_support) +@@ -85,7 +85,9 @@ netsnmp_feature_child_of(usm_scapi, usm_support); #include <openssl/hmac.h> #include <openssl/evp.h> #include <openssl/rand.h> diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch index 7cbaf0bc5..807983f61 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch @@ -1,4 +1,4 @@ -From 827fe3b0253aab33472828f40ad05934cc0261b8 Mon Sep 17 00:00:00 2001 +From 972df16e9599dffddf5d714a4cbf43008c771122 Mon Sep 17 00:00:00 2001 From: Jackie Huang <jackie.huang@windriver.com> Date: Wed, 14 Jan 2015 15:10:06 +0800 Subject: [PATCH] testing: add the output format for ptest diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-accept-configure-options-from-env.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-accept-configure-options-from-env.patch deleted file mode 100644 index b0dbf5ad3..000000000 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-accept-configure-options-from-env.patch +++ /dev/null @@ -1,15 +0,0 @@ -Reproducible build: To avoid build host paths being written into binaries, -accept NETSNMP_CONFIGURE_OPTIONS from the environment. -NETSNMP_CONFIGURE_OPTIONS can be set either null or to a fixed value. - ---- net-snmp-5.8.original/configure.ac 2018-11-20 17:41:39.926529072 +1300 -+++ net-snmp-5.8/configure.ac 2018-11-20 17:54:44.488180224 +1300 -@@ -28,7 +28,7 @@ - # - # save the configure arguments - # --AC_DEFINE_UNQUOTED(NETSNMP_CONFIGURE_OPTIONS,"$ac_configure_args", -+AC_DEFINE_UNQUOTED(NETSNMP_CONFIGURE_OPTIONS,"${NETSNMP_CONFIGURE_OPTIONS-$ac_configure_args}", - [configure options specified]) - CONFIGURE_OPTIONS="\"$ac_configure_args\"" - AC_SUBST(CONFIGURE_OPTIONS) diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch index 4316c7a71..bf1e7bedf 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch @@ -1,11 +1,22 @@ +From 84e362fe97f50fbad69f083bc2d8fe18f83eb2f7 Mon Sep 17 00:00:00 2001 +From: "douglas.royds" <douglas.royds@taitradio.com> +Date: Wed, 21 Nov 2018 13:52:18 +1300 +Subject: [PATCH] net-snmp: Reproducibility: Don't check build host for + Reproducible build: Don't check for /etc/printcap on the build machine when cross-compiling. Use AC_CHECK_FILE to set the cached variable ac_cv_file__etc_printcap instead. When cross-compiling, this variable should be set in the environment to "yes" or "no" as appropriate for the target platform. ---- net-snmp-5.8.original/configure.d/config_os_misc4 2018-11-20 17:05:03.986274522 +1300 -+++ net-snmp-5.8/configure.d/config_os_misc4 2018-11-20 17:08:32.250700448 +1300 -@@ -116,9 +116,9 @@ +--- + configure.d/config_os_misc4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.d/config_os_misc4 b/configure.d/config_os_misc4 +index 6f23c8e..8cea75a 100644 +--- a/configure.d/config_os_misc4 ++++ b/configure.d/config_os_misc4 +@@ -99,9 +99,9 @@ if test x$LPSTAT_PATH != x; then [Path to the lpstat command]) AC_DEFINE(HAVE_LPSTAT, 1, [Set if the lpstat command is available]) fi diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.8.bb b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.bb index 67316db0d..5df1f9340 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.8.bb +++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.bb @@ -25,13 +25,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \ file://net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch \ file://net-snmp-fix-for-disable-des.patch \ file://reproducibility-have-printcap.patch \ - file://reproducibility-accept-configure-options-from-env.patch \ - file://0001-net-snmp-fix-compile-error-disable-des.patch \ - file://0001-Add-pkg-config-support-for-building-applications-and.patch \ - file://CVE-2019-20892.patch \ " -SRC_URI[md5sum] = "63bfc65fbb86cdb616598df1aff6458a" -SRC_URI[sha256sum] = "b2fc3500840ebe532734c4786b0da4ef0a5f67e51ef4c86b3345d697e4976adf" +SRC_URI[sha256sum] = "04303a66f85d6d8b16d3cc53bde50428877c82ab524e17591dfceaeb94df6071" UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/net-snmp/files/net-snmp/" UPSTREAM_CHECK_REGEX = "/net-snmp/(?P<pver>\d+(\.\d+)+)/" diff --git a/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc b/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc index 70c32b7a4..11b7d576a 100644 --- a/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc +++ b/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc @@ -40,7 +40,7 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" PACKAGECONFIG[cap] = "--enable-capabilities,--disable-capabilities,libcap" PACKAGECONFIG[pam] = "--with-libpam, --without-libpam, libpam" -inherit autotools update-rc.d useradd systemd pkgconfig multilib_header +inherit autotools update-rc.d useradd systemd pkgconfig multilib_header update-alternatives CFLAGS += "-fcommon" @@ -237,3 +237,7 @@ pkg_prerm_${PN}-ripngd () { pkg_prerm_${PN}-isisd () { ${sysconfdir}/init.d/quagga stop isisd } + +ALTERNATIVE_${PN} = "pimd" +ALTERNATIVE_LINK_NAME[pimd] = "${sbindir}/pimd" + diff --git a/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.10.bb b/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.11.bb index 8d82ee454..09b793119 100644 --- a/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.10.bb +++ b/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.11.bb @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" PV = "6.10" -SRCREV = "5ff5fc2ecc10353fd39ad508db5c2828fd2d8d9a" +SRCREV = "ded4e81796a18cde73329e838357f084aa05720f" SRC_URI = "git://git.samba.org/cifs-utils.git" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb b/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb new file mode 100644 index 000000000..c641c265e --- /dev/null +++ b/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb @@ -0,0 +1,42 @@ +SUMMARY = "A suite for man in the middle attacks" +HOMEPAGE = "https://github.com/Ettercap/ettercap" +LICENSE = "GPL-2.0+" +LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +inherit cmake + +DEPENDS += "ethtool \ + geoip \ + librepo \ + libnet \ + libpcap \ + ncurses \ + openssl \ + zlib \ + bison-native \ + flex-native \ + " + +RDEPENDS_${PN} += "bash ethtool libgcc" + +SRC_URI = "gitsm://github.com/Ettercap/ettercap" + +SRCREV = "7281fbddb7da7478beb1d21e3cb105fff3778b31" + +S = "${WORKDIR}/git" + +EXTRA_OECMAKE = " \ + -DCMAKE_SKIP_RPATH=TRUE \ + -DBUNDLED_LIBS=ON \ + -DENABLE_IPV6=ON \ + -DENABLE_GTK=OFF \ +" + +# Replaces default encoding set (ISO-8859-1) with UTF-8 in ettercap +# configuration file installed by the package. +# It ensures that all characters are properly decoded and avoids +# any fatal errors while running in text mode (-T). +do_install_append() { + sed -i 's@utf8_encoding.*@utf8_encoding = "UTF-8"@g' \ + ${D}/etc/ettercap/etter.conf +} diff --git a/meta-openembedded/meta-networking/recipes-support/fping/fping_4.4.bb b/meta-openembedded/meta-networking/recipes-support/fping/fping_5.0.bb index 125fdfa70..54606e8b6 100644 --- a/meta-openembedded/meta-networking/recipes-support/fping/fping_4.4.bb +++ b/meta-openembedded/meta-networking/recipes-support/fping/fping_5.0.bb @@ -12,7 +12,7 @@ LICENSE = "BSD" LIC_FILES_CHKSUM = "file://COPYING;md5=c6170fbadddfcd74f011515291d96901" SRC_URI = "http://www.fping.org/dist/fping-${PV}.tar.gz" -SRC_URI[sha256sum] = "9f854b65a52dc7b1749d6743e35d0a6268179d1a724267339fc9a066b2b72d11" +SRC_URI[sha256sum] = "ed38c0b9b64686a05d1b3bc1d66066114a492e04e44eef1821d43b1263cd57b8" S = "${WORKDIR}/fping-${PV}" diff --git a/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.3.2.bb b/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.3.2.bb index 2faa7cb1c..df9e85d7d 100644 --- a/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.3.2.bb +++ b/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.3.2.bb @@ -12,9 +12,13 @@ SRC_URI[sha256sum] = "c77a9812751f114490a28a6839b16aac8b020c8d9fd6aa22bf3880c054 EXTRA_OECONF_append_libc-musl = " --embedded-libc" -inherit autotools-brokensep +inherit autotools-brokensep update-alternatives do_configure() { oe_runconf } +ALTERNATIVE_PRIORITY = "100" + +ALTERNATIVE_${PN} = "pimd" +ALTERNATIVE_LINK_NAME[pimd] = "${sbindir}/pimd" diff --git a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb index 07e3ffed4..3739c496a 100644 --- a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb +++ b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb @@ -12,7 +12,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \ SRC_URI[md5sum] = "65b4e0df4934a6cd08c506cabcbe584f" SRC_URI[sha256sum] = "22c37dc90c871e8e052b2cab0ad219d010fa938608cd66b21c8f3c759046fa36" -inherit autotools +inherit autotools update-alternatives PACKAGECONFIG ?= "ssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" @@ -33,3 +33,16 @@ do_install_append () { ln -s ssmtp ${D}${sbindir}/newaliases ln -s ssmtp ${D}${sbindir}/mailq } + +ALTERNATIVE_PRIORITY_${PN} = "100" + +ALTERNATIVE_${PN} = "mailq newalias sendmail" +ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail" +ALTERNATIVE_LINK_NAME[newalias] = "${sbindir}/newalias" +ALTERNATIVE_LINK_NAME[mailq] = "${sbindir}/mailq" + +ALTERNATIVE_PRIORITY_${PN}-doc = "100" +ALTERNATIVE_${PN}-doc += "mailq.1 newaliases.1 sendmail.1" +ALTERNATIVE_LINK_NAME[mailq.1] = "${mandir}/man1/mailq.1" +ALTERNATIVE_LINK_NAME[newaliases.1] = "${mandir}/man1/newaliases.1" +ALTERNATIVE_LINK_NAME[sendmail.1] = "${mandir}/man1/sendmail.1" diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.5.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.6.bb index a6c09d47b..916c5b7a4 100644 --- a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.5.bb +++ b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.2.6.bb @@ -12,7 +12,7 @@ SRC_URI = "https://1.eu.dl.wireshark.org/src/all-versions/wireshark-${PV}.tar.xz UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src" -SRC_URI[sha256sum] = "bd89052a5766cce08b1090df49628567e48cdd24bbaa47667c851bac6aaac940" +SRC_URI[sha256sum] = "ebb1eebe39bcecee02195dc328dd25f6862fc9e9dea4c2e29eae50537d5eb4f2" PE = "1" diff --git a/meta-openembedded/meta-oe/README b/meta-openembedded/meta-oe/README index 347816b0d..6a0d7c0a1 100644 --- a/meta-openembedded/meta-oe/README +++ b/meta-openembedded/meta-oe/README @@ -17,7 +17,7 @@ pacman -S lib32-gcc-libs lib32-glibc Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe]' in the subject' When sending single patches, please use something like: -'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe][PATCH' +'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix="meta-oe][PATCH"' You are encouraged to fork the mirror on GitHub https://github.com/openembedded/openembedded-core to share your patches, this is preferred for patch sets consisting of more than one patch. diff --git a/meta-openembedded/meta-oe/conf/layer.conf b/meta-openembedded/meta-oe/conf/layer.conf index 5bf1f6cfd..5b79b59b7 100644 --- a/meta-openembedded/meta-oe/conf/layer.conf +++ b/meta-openembedded/meta-oe/conf/layer.conf @@ -27,6 +27,7 @@ BBFILE_PRIORITY_openembedded-layer = "6" # to ensure yocto compatibility check pass BBFILES_DYNAMIC += " \ meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bb \ +networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/recipes-*/*/*.bb \ perl-layer:${LAYERDIR}/dynamic-layers/perl-layer/recipes-*/*/*.bb \ " @@ -91,6 +92,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \ source-han-sans-jp-fonts->fontconfig \ source-han-sans-kr-fonts->fontconfig \ source-han-sans-tw-fonts->fontconfig \ + source-code-pro-fonts->fontconfig \ " DEFAULT_TEST_SUITES_pn-meta-oe-ptest-image = " ${PTESTTESTSUITE}" diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Fix-compilation-with-fno-common.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Fix-compilation-with-fno-common.patch new file mode 100644 index 000000000..f5c2cf217 --- /dev/null +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Fix-compilation-with-fno-common.patch @@ -0,0 +1,448 @@ +From 3690dc5f567906c45f057509305fbaa021b33adb Mon Sep 17 00:00:00 2001 +From: Yichao Yu <yyc1992@gmail.com> +Date: Tue, 15 Sep 2020 12:35:46 -0700 +Subject: [PATCH] Fix compilation with -fno-common. + +Making all other archs consistent with IA64 which should not have this problem. +Also move the FIXME to the correct place. + +Also add some minimum comments about this... + +Upstream-Status: Backport [https://github.com/libunwind/libunwind/pull/166/commits/29e17d8d2ccbca07c423e3089a6d5ae8a1c9cb6e] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/third_party/unwind/dist/src/aarch64/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/arm/Ginit.c | 15 +++++++-------- + .../src/coredump/_UPT_get_dyn_info_list_addr.c | 5 +++++ + src/third_party/unwind/dist/src/hppa/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/ia64/Ginit.c | 1 + + .../unwind/dist/src/mi/Gfind_dynamic_proc_info.c | 1 + + src/third_party/unwind/dist/src/mips/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/ppc32/Ginit.c | 11 +++++++---- + src/third_party/unwind/dist/src/ppc64/Ginit.c | 11 +++++++---- + .../dist/src/ptrace/_UPT_get_dyn_info_list_addr.c | 5 +++++ + src/third_party/unwind/dist/src/s390x/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/sh/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/tilegx/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/x86/Ginit.c | 15 +++++++-------- + src/third_party/unwind/dist/src/x86_64/Ginit.c | 15 +++++++-------- + 15 files changed, 89 insertions(+), 80 deletions(-) + +diff --git a/src/third_party/unwind/dist/src/aarch64/Ginit.c b/src/third_party/unwind/dist/src/aarch64/Ginit.c +index dec235c829..35389762f2 100644 +--- a/src/third_party/unwind/dist/src/aarch64/Ginit.c ++++ b/src/third_party/unwind/dist/src/aarch64/Ginit.c +@@ -61,13 +61,6 @@ tdep_uc_addr (unw_tdep_context_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -78,7 +71,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/arm/Ginit.c b/src/third_party/unwind/dist/src/arm/Ginit.c +index 2720d063a2..0bac0d72da 100644 +--- a/src/third_party/unwind/dist/src/arm/Ginit.c ++++ b/src/third_party/unwind/dist/src/arm/Ginit.c +@@ -57,18 +57,17 @@ tdep_uc_addr (unw_tdep_context_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/coredump/_UPT_get_dyn_info_list_addr.c b/src/third_party/unwind/dist/src/coredump/_UPT_get_dyn_info_list_addr.c +index 0d11905566..739ed0569b 100644 +--- a/src/third_party/unwind/dist/src/coredump/_UPT_get_dyn_info_list_addr.c ++++ b/src/third_party/unwind/dist/src/coredump/_UPT_get_dyn_info_list_addr.c +@@ -74,6 +74,11 @@ get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, + + #else + ++/* XXX fix me: there is currently no way to locate the dyn-info list ++ by a remote unwinder. On ia64, this is done via a special ++ unwind-table entry. Perhaps something similar can be done with ++ DWARF2 unwind info. */ ++ + static inline int + get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, + int *countp) +diff --git a/src/third_party/unwind/dist/src/hppa/Ginit.c b/src/third_party/unwind/dist/src/hppa/Ginit.c +index 461e4b93da..265455a68c 100644 +--- a/src/third_party/unwind/dist/src/hppa/Ginit.c ++++ b/src/third_party/unwind/dist/src/hppa/Ginit.c +@@ -64,13 +64,6 @@ _Uhppa_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -81,7 +74,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/ia64/Ginit.c b/src/third_party/unwind/dist/src/ia64/Ginit.c +index b09a2ad57c..8601bb3ca8 100644 +--- a/src/third_party/unwind/dist/src/ia64/Ginit.c ++++ b/src/third_party/unwind/dist/src/ia64/Ginit.c +@@ -68,6 +68,7 @@ get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + if (!_U_dyn_info_list_addr) + return -UNW_ENOINFO; + #endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. + *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } +diff --git a/src/third_party/unwind/dist/src/mi/Gfind_dynamic_proc_info.c b/src/third_party/unwind/dist/src/mi/Gfind_dynamic_proc_info.c +index 98d3501286..2e7c62e5e8 100644 +--- a/src/third_party/unwind/dist/src/mi/Gfind_dynamic_proc_info.c ++++ b/src/third_party/unwind/dist/src/mi/Gfind_dynamic_proc_info.c +@@ -49,6 +49,7 @@ local_find_proc_info (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, + return -UNW_ENOINFO; + #endif + ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. + list = (unw_dyn_info_list_t *) (uintptr_t) _U_dyn_info_list_addr (); + for (di = list->first; di; di = di->next) + if (ip >= di->start_ip && ip < di->end_ip) +diff --git a/src/third_party/unwind/dist/src/mips/Ginit.c b/src/third_party/unwind/dist/src/mips/Ginit.c +index 3df170c754..bf7a8f5a8f 100644 +--- a/src/third_party/unwind/dist/src/mips/Ginit.c ++++ b/src/third_party/unwind/dist/src/mips/Ginit.c +@@ -69,13 +69,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -86,7 +79,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) (intptr_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/ppc32/Ginit.c b/src/third_party/unwind/dist/src/ppc32/Ginit.c +index ba302448a3..7b45455807 100644 +--- a/src/third_party/unwind/dist/src/ppc32/Ginit.c ++++ b/src/third_party/unwind/dist/src/ppc32/Ginit.c +@@ -91,9 +91,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -104,7 +101,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/ppc64/Ginit.c b/src/third_party/unwind/dist/src/ppc64/Ginit.c +index 4c88cd6e77..7bfb395a79 100644 +--- a/src/third_party/unwind/dist/src/ppc64/Ginit.c ++++ b/src/third_party/unwind/dist/src/ppc64/Ginit.c +@@ -95,9 +95,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -108,7 +105,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/ptrace/_UPT_get_dyn_info_list_addr.c b/src/third_party/unwind/dist/src/ptrace/_UPT_get_dyn_info_list_addr.c +index cc5ed04418..16671d453e 100644 +--- a/src/third_party/unwind/dist/src/ptrace/_UPT_get_dyn_info_list_addr.c ++++ b/src/third_party/unwind/dist/src/ptrace/_UPT_get_dyn_info_list_addr.c +@@ -71,6 +71,11 @@ get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, + + #else + ++/* XXX fix me: there is currently no way to locate the dyn-info list ++ by a remote unwinder. On ia64, this is done via a special ++ unwind-table entry. Perhaps something similar can be done with ++ DWARF2 unwind info. */ ++ + static inline int + get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, + int *countp) +diff --git a/src/third_party/unwind/dist/src/s390x/Ginit.c b/src/third_party/unwind/dist/src/s390x/Ginit.c +index f0886ac933..db01743c06 100644 +--- a/src/third_party/unwind/dist/src/s390x/Ginit.c ++++ b/src/third_party/unwind/dist/src/s390x/Ginit.c +@@ -50,8 +50,6 @@ static struct unw_addr_space local_addr_space; + + unw_addr_space_t unw_local_addr_space = &local_addr_space; + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- + static inline void * + uc_addr (ucontext_t *uc, int reg) + { +@@ -75,11 +73,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -90,7 +83,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/sh/Ginit.c b/src/third_party/unwind/dist/src/sh/Ginit.c +index 52988a721e..9fe96d2bd4 100644 +--- a/src/third_party/unwind/dist/src/sh/Ginit.c ++++ b/src/third_party/unwind/dist/src/sh/Ginit.c +@@ -58,13 +58,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -75,7 +68,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/tilegx/Ginit.c b/src/third_party/unwind/dist/src/tilegx/Ginit.c +index 7564a558be..925e641324 100644 +--- a/src/third_party/unwind/dist/src/tilegx/Ginit.c ++++ b/src/third_party/unwind/dist/src/tilegx/Ginit.c +@@ -64,13 +64,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -81,7 +74,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) (intptr_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/x86/Ginit.c b/src/third_party/unwind/dist/src/x86/Ginit.c +index f6b8dc27d4..3cec74a216 100644 +--- a/src/third_party/unwind/dist/src/x86/Ginit.c ++++ b/src/third_party/unwind/dist/src/x86/Ginit.c +@@ -54,13 +54,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -71,7 +64,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +diff --git a/src/third_party/unwind/dist/src/x86_64/Ginit.c b/src/third_party/unwind/dist/src/x86_64/Ginit.c +index 6161da6401..5c4e4269a6 100644 +--- a/src/third_party/unwind/dist/src/x86_64/Ginit.c ++++ b/src/third_party/unwind/dist/src/x86_64/Ginit.c +@@ -49,13 +49,6 @@ static struct unw_addr_space local_addr_space; + + unw_addr_space_t unw_local_addr_space = &local_addr_space; + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -66,7 +59,13 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } + +-- +2.28.0 + diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch index 190884624..b8a325295 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch @@ -1,4 +1,4 @@ -From 1b2e24e14ee72e54e466be2512c78272f62d60b4 Mon Sep 17 00:00:00 2001 +From 8295bb6a60896fed54d6450bca091aea4eea4fb2 Mon Sep 17 00:00:00 2001 From: Vincent Prince <vincent.prince.fr@gmail.com> Date: Mon, 16 Sep 2019 13:21:44 +0200 Subject: [PATCH 01/10] Tell scons to use build settings from environment @@ -7,14 +7,14 @@ Subject: [PATCH 01/10] Tell scons to use build settings from environment Signed-off-by: Sven Ebenfeld <sven.ebenfeld@gmail.com> Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> --- - SConstruct | 8 ++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) + SConstruct | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct -index 7ebbcbc..e63cf15 100644 +index 89c044ab78..2044c0ddb8 100644 --- a/SConstruct +++ b/SConstruct -@@ -608,6 +608,7 @@ def variable_arch_converter(val): +@@ -593,6 +593,7 @@ def variable_arch_converter(val): 'amd64': 'x86_64', 'emt64': 'x86_64', 'x86': 'i386', @@ -22,7 +22,7 @@ index 7ebbcbc..e63cf15 100644 } val = val.lower() -@@ -695,7 +696,8 @@ env_vars.Add( +@@ -723,7 +724,8 @@ env_vars.Add( ) env_vars.Add('CC', @@ -32,7 +32,7 @@ index 7ebbcbc..e63cf15 100644 env_vars.Add('CCFLAGS', help='Sets flags for the C and C++ compiler', -@@ -715,7 +717,8 @@ env_vars.Add('CPPPATH', +@@ -743,7 +745,8 @@ env_vars.Add('CPPPATH', converter=variable_shlex_converter) env_vars.Add('CXX', @@ -42,15 +42,14 @@ index 7ebbcbc..e63cf15 100644 env_vars.Add('CXXFLAGS', help='Sets flags for the C++ compiler', -@@ -1018,6 +1021,7 @@ envDict = dict(BUILD_ROOT=buildDir, - ) +@@ -1127,6 +1130,7 @@ if get_option('build-tools') == 'next' or get_option('ninja') == 'next': + SCons.Tool.DefaultToolpath.insert(0, os.path.abspath('site_scons/site_tools/next')) env = Environment(variables=env_vars, **envDict) +env.PrependENVPath('PATH', os.getenv('PATH')) - del envDict - - for var in ['CC', 'CXX']: + # Only print the spinner if stdout is a tty + if sys.stdout.isatty(): -- -2.7.4 +2.24.0 diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch index d98fa56cb..8d82be1b5 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch @@ -1,4 +1,4 @@ -From d701ceeb15662038435b80ba556a80c17f76d2dc Mon Sep 17 00:00:00 2001 +From 6332823f9fdcb571305b716330e67d0b38810868 Mon Sep 17 00:00:00 2001 From: Vincent Prince <vincent.prince.fr@gmail.com> Date: Mon, 16 Sep 2019 13:30:13 +0200 Subject: [PATCH 03/10] Use __GLIBC__ to control use of gnu_get_libc_version @@ -10,7 +10,7 @@ Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp -index cccb91c..45c4b7d 100644 +index a968c54727..0d8b8874e2 100644 --- a/src/mongo/util/processinfo_linux.cpp +++ b/src/mongo/util/processinfo_linux.cpp @@ -44,10 +44,10 @@ @@ -27,7 +27,7 @@ index cccb91c..45c4b7d 100644 #endif #include <boost/filesystem.hpp> -@@ -546,7 +546,7 @@ void ProcessInfo::SystemInfo::collectSystemInfo() { +@@ -617,7 +617,7 @@ void ProcessInfo::SystemInfo::collectSystemInfo() { std::stringstream ss; ss << "uClibc-" << __UCLIBC_MAJOR__ << "." << __UCLIBC_MINOR__ << "." << __UCLIBC_SUBLEVEL__; bExtra.append("libcVersion", ss.str()); @@ -37,5 +37,5 @@ index cccb91c..45c4b7d 100644 #endif if (!verSig.empty()) -- -2.7.4 +2.24.0 diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch index b9c670407..958e09c3d 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch @@ -1,4 +1,4 @@ -From 20fcbf2a05ee6542aba942f6006d149db70fb9ce Mon Sep 17 00:00:00 2001 +From 4e7f15346682482bc2071c7209dec97507d3bc4c Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sat, 2 Sep 2017 10:03:37 -0700 Subject: [PATCH 02/10] Use long long instead of int64_t @@ -8,12 +8,13 @@ error: call to member function 'appendNumber' is ambiguous since this function expects long long as parameter and not int64_t Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> --- src/mongo/util/procparser.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mongo/util/procparser.cpp b/src/mongo/util/procparser.cpp -index c574a3f..5ea66b7 100644 +index 24b9d1e2c9..0f274cfff6 100644 --- a/src/mongo/util/procparser.cpp +++ b/src/mongo/util/procparser.cpp @@ -261,7 +261,7 @@ Status parseProcStat(const std::vector<StringData>& keys, @@ -23,7 +24,7 @@ index c574a3f..5ea66b7 100644 - uint64_t value; + long long value; - if (!parseNumberFromString(stringValue, &value).isOK()) { + if (!NumberParser{}(stringValue, &value).isOK()) { value = 0; @@ -273,7 +273,7 @@ Status parseProcStat(const std::vector<StringData>& keys, } else { @@ -32,7 +33,7 @@ index c574a3f..5ea66b7 100644 - uint64_t value; + long long value; - if (!parseNumberFromString(stringValue, &value).isOK()) { + if (!NumberParser{}(stringValue, &value).isOK()) { value = 0; @@ -366,7 +366,7 @@ Status parseProcMemInfo(const std::vector<StringData>& keys, @@ -41,7 +42,7 @@ index c574a3f..5ea66b7 100644 - uint64_t value; + long long value; - if (!parseNumberFromString(stringValue, &value).isOK()) { + if (!NumberParser{}(stringValue, &value).isOK()) { value = 0; @@ -522,7 +522,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks, StringData data, @@ -59,8 +60,8 @@ index c574a3f..5ea66b7 100644 - uint64_t value; + long long value; - if (!parseNumberFromString(stringValue, &value).isOK()) { + if (!NumberParser{}(stringValue, &value).isOK()) { value = 0; -- -2.7.4 +2.24.0 diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-kms-message-bump-libmongocrypto-to-v1.0.4.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-kms-message-bump-libmongocrypto-to-v1.0.4.patch new file mode 100644 index 000000000..df4cee2b4 --- /dev/null +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-kms-message-bump-libmongocrypto-to-v1.0.4.patch @@ -0,0 +1,714 @@ +From 44272ce47e768e090263df5cb9cb7ce17e544ad3 Mon Sep 17 00:00:00 2001 +From: Vincent Prince <vincent.prince.external@saftbatteries.com> +Date: Tue, 15 Sep 2020 11:40:15 +0200 +Subject: [PATCH] kms-message: bump libmongocrypto to v1.0.4 + +This fixes compilation with alpinelinux +see https://github.com/mongodb/libmongocrypt/pull/89 + +Upstream-Status: Pending + +Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> +--- + .../kms-message/THIRD_PARTY_NOTICES | 2 +- + src/third_party/kms-message/src/hexlify.c | 21 +---- + src/third_party/kms-message/src/hexlify.h | 2 - + .../kms-message/src/kms_crypto_apple.c | 5 + + .../kms-message/src/kms_crypto_libcrypto.c | 94 +++++++++++++++++++ + .../kms-message/src/kms_crypto_none.c | 4 + + .../kms-message/src/kms_crypto_windows.c | 4 + + .../kms-message/src/kms_decrypt_request.c | 2 +- + .../kms-message/src/kms_encrypt_request.c | 2 +- + src/third_party/kms-message/src/kms_kv_list.c | 11 ++- + .../kms-message/src/kms_message/kms_message.h | 2 + + .../src/kms_message/kms_message_defines.h | 10 ++ + src/third_party/kms-message/src/kms_port.c | 33 +++++++ + src/third_party/kms-message/src/kms_port.h | 27 +++--- + src/third_party/kms-message/src/kms_request.c | 41 +++++--- + .../kms-message/src/kms_request_str.c | 13 ++- + .../kms-message/src/kms_request_str.h | 5 - + .../kms-message/src/kms_response_parser.c | 26 ++++- + .../scripts/kms_message_get_sources.sh | 2 +- + 19 files changed, 244 insertions(+), 62 deletions(-) + create mode 100644 src/third_party/kms-message/src/kms_crypto_libcrypto.c + create mode 100644 src/third_party/kms-message/src/kms_port.c + +diff --git a/src/third_party/kms-message/THIRD_PARTY_NOTICES b/src/third_party/kms-message/THIRD_PARTY_NOTICES +index 3fc095170c..4110c1b91e 100644 +--- a/src/third_party/kms-message/THIRD_PARTY_NOTICES ++++ b/src/third_party/kms-message/THIRD_PARTY_NOTICES +@@ -1,4 +1,4 @@ +-License notice for common-b64.c ++License notice for kms_b64.c + ------------------------------------------------------------------------------- + + ISC License +diff --git a/src/third_party/kms-message/src/hexlify.c b/src/third_party/kms-message/src/hexlify.c +index be9ee030b9..941fc93d1b 100644 +--- a/src/third_party/kms-message/src/hexlify.c ++++ b/src/third_party/kms-message/src/hexlify.c +@@ -24,6 +24,8 @@ char * + hexlify (const uint8_t *buf, size_t len) + { + char *hex_chars = malloc (len * 2 + 1); ++ KMS_ASSERT (hex_chars); ++ + char *p = hex_chars; + size_t i; + +@@ -35,22 +37,3 @@ hexlify (const uint8_t *buf, size_t len) + + return hex_chars; + } +- +-uint8_t * +-unhexlify (const char *hex_chars, size_t *len) +-{ +- uint8_t *buf; +- uint8_t *pos; +- +- *len = strlen (hex_chars) / 2; +- buf = malloc (*len); +- pos = buf; +- +- while (*hex_chars) { +- KMS_ASSERT (1 == sscanf (hex_chars, "%2hhx", pos)); +- pos++; +- hex_chars += 2; +- } +- +- return buf; +-} +diff --git a/src/third_party/kms-message/src/hexlify.h b/src/third_party/kms-message/src/hexlify.h +index e0096eb6ca..a6a504ebe8 100644 +--- a/src/third_party/kms-message/src/hexlify.h ++++ b/src/third_party/kms-message/src/hexlify.h +@@ -19,5 +19,3 @@ + + char * + hexlify (const uint8_t *buf, size_t len); +-uint8_t * +-unhexlify (const char *hex_chars, size_t *len); +diff --git a/src/third_party/kms-message/src/kms_crypto_apple.c b/src/third_party/kms-message/src/kms_crypto_apple.c +index 61da0a6288..a26e0d65e8 100644 +--- a/src/third_party/kms-message/src/kms_crypto_apple.c ++++ b/src/third_party/kms-message/src/kms_crypto_apple.c +@@ -16,9 +16,12 @@ + + #include "kms_crypto.h" + ++#ifdef KMS_MESSAGE_ENABLE_CRYPTO_COMMON_CRYPTO ++ + #include <CommonCrypto/CommonDigest.h> + #include <CommonCrypto/CommonHMAC.h> + ++ + int + kms_crypto_init () + { +@@ -54,3 +57,5 @@ kms_sha256_hmac (void *unused_ctx, + CCHmac (kCCHmacAlgSHA256, key_input, key_len, input, len, hash_out); + return true; + } ++ ++#endif /* KMS_MESSAGE_ENABLE_CRYPTO_COMMON_CRYPTO */ +diff --git a/src/third_party/kms-message/src/kms_crypto_libcrypto.c b/src/third_party/kms-message/src/kms_crypto_libcrypto.c +new file mode 100644 +index 0000000000..6f25657fdd +--- /dev/null ++++ b/src/third_party/kms-message/src/kms_crypto_libcrypto.c +@@ -0,0 +1,94 @@ ++/* ++ * Copyright 2018-present MongoDB, Inc. ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "kms_crypto.h" ++ ++#ifdef KMS_MESSAGE_ENABLE_CRYPTO_LIBCRYPTO ++ ++#include <openssl/sha.h> ++#include <openssl/evp.h> ++#include <openssl/hmac.h> ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \ ++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L) ++static EVP_MD_CTX * ++EVP_MD_CTX_new (void) ++{ ++ return calloc (sizeof (EVP_MD_CTX), 1); ++} ++ ++static void ++EVP_MD_CTX_free (EVP_MD_CTX *ctx) ++{ ++ EVP_MD_CTX_cleanup (ctx); ++ free (ctx); ++} ++#endif ++ ++int ++kms_crypto_init () ++{ ++ return 0; ++} ++ ++void ++kms_crypto_cleanup () ++{ ++} ++ ++bool ++kms_sha256 (void *unused_ctx, ++ const char *input, ++ size_t len, ++ unsigned char *hash_out) ++{ ++ EVP_MD_CTX *digest_ctxp = EVP_MD_CTX_new (); ++ bool rval = false; ++ ++ if (1 != EVP_DigestInit_ex (digest_ctxp, EVP_sha256 (), NULL)) { ++ goto cleanup; ++ } ++ ++ if (1 != EVP_DigestUpdate (digest_ctxp, input, len)) { ++ goto cleanup; ++ } ++ ++ rval = (1 == EVP_DigestFinal_ex (digest_ctxp, hash_out, NULL)); ++ ++cleanup: ++ EVP_MD_CTX_free (digest_ctxp); ++ ++ return rval; ++} ++ ++bool ++kms_sha256_hmac (void *unused_ctx, ++ const char *key_input, ++ size_t key_len, ++ const char *input, ++ size_t len, ++ unsigned char *hash_out) ++{ ++ return HMAC (EVP_sha256 (), ++ key_input, ++ key_len, ++ (unsigned char *) input, ++ len, ++ hash_out, ++ NULL) != NULL; ++} ++ ++#endif /* KMS_MESSAGE_ENABLE_CRYPTO_LIBCRYPTO */ +diff --git a/src/third_party/kms-message/src/kms_crypto_none.c b/src/third_party/kms-message/src/kms_crypto_none.c +index 9ef2147687..94da5abd88 100644 +--- a/src/third_party/kms-message/src/kms_crypto_none.c ++++ b/src/third_party/kms-message/src/kms_crypto_none.c +@@ -16,6 +16,8 @@ + + #include "kms_crypto.h" + ++#ifndef KMS_MESSAGE_ENABLE_CRYPTO ++ + int + kms_crypto_init () + { +@@ -48,3 +50,5 @@ kms_sha256_hmac (void *unused_ctx, + /* only gets called if hooks were mistakenly not set */ + return false; + } ++ ++#endif /* KMS_MESSAGE_ENABLE_CRYPTO */ +diff --git a/src/third_party/kms-message/src/kms_crypto_windows.c b/src/third_party/kms-message/src/kms_crypto_windows.c +index ccdc7e095d..8177b0ddc0 100644 +--- a/src/third_party/kms-message/src/kms_crypto_windows.c ++++ b/src/third_party/kms-message/src/kms_crypto_windows.c +@@ -16,6 +16,8 @@ + + #include "kms_crypto.h" + ++#ifdef KMS_MESSAGE_ENABLE_CRYPTO_CNG ++ + // tell windows.h not to include a bunch of headers we don't need: + #define WIN32_LEAN_AND_MEAN + +@@ -130,3 +132,5 @@ cleanup: + + return status == STATUS_SUCCESS ? 1 : 0; + } ++ ++#endif /* KMS_MESSAGE_ENABLE_CRYPTO_CNG */ +diff --git a/src/third_party/kms-message/src/kms_decrypt_request.c b/src/third_party/kms-message/src/kms_decrypt_request.c +index 06faa43119..f1ca282768 100644 +--- a/src/third_party/kms-message/src/kms_decrypt_request.c ++++ b/src/third_party/kms-message/src/kms_decrypt_request.c +@@ -48,7 +48,7 @@ kms_decrypt_request_new (const uint8_t *ciphertext_blob, + if (!(b64 = malloc (b64_len))) { + KMS_ERROR (request, + "Could not allocate %d bytes for base64-encoding payload", +- b64_len); ++ (int) b64_len); + goto done; + } + +diff --git a/src/third_party/kms-message/src/kms_encrypt_request.c b/src/third_party/kms-message/src/kms_encrypt_request.c +index b5f4d6436e..24b064d95f 100644 +--- a/src/third_party/kms-message/src/kms_encrypt_request.c ++++ b/src/third_party/kms-message/src/kms_encrypt_request.c +@@ -47,7 +47,7 @@ kms_encrypt_request_new (const uint8_t *plaintext, + if (!(b64 = malloc (b64_len))) { + KMS_ERROR (request, + "Could not allocate %d bytes for base64-encoding payload", +- b64_len); ++ (int) b64_len); + goto done; + } + +diff --git a/src/third_party/kms-message/src/kms_kv_list.c b/src/third_party/kms-message/src/kms_kv_list.c +index 2d6845a1aa..0cff3dc2c6 100644 +--- a/src/third_party/kms-message/src/kms_kv_list.c ++++ b/src/third_party/kms-message/src/kms_kv_list.c +@@ -17,6 +17,7 @@ + + #include "kms_kv_list.h" + #include "kms_message/kms_message.h" ++#include "kms_message_private.h" + #include "kms_request_str.h" + #include "kms_port.h" + #include "sort.h" +@@ -39,9 +40,12 @@ kms_kv_list_t * + kms_kv_list_new (void) + { + kms_kv_list_t *lst = malloc (sizeof (kms_kv_list_t)); ++ KMS_ASSERT (lst); + + lst->size = 16; + lst->kvs = malloc (lst->size * sizeof (kms_kv_t)); ++ KMS_ASSERT (lst->kvs); ++ + lst->len = 0; + + return lst; +@@ -72,6 +76,7 @@ kms_kv_list_add (kms_kv_list_t *lst, + if (lst->len == lst->size) { + lst->size *= 2; + lst->kvs = realloc (lst->kvs, lst->size * sizeof (kms_kv_t)); ++ KMS_ASSERT (lst->kvs); + } + + kv_init (&lst->kvs[lst->len], key, value); +@@ -84,7 +89,7 @@ kms_kv_list_find (const kms_kv_list_t *lst, const char *key) + size_t i; + + for (i = 0; i < lst->len; i++) { +- if (0 == strcasecmp (lst->kvs[i].key->str, key)) { ++ if (0 == kms_strcasecmp (lst->kvs[i].key->str, key)) { + return &lst->kvs[i]; + } + } +@@ -119,8 +124,12 @@ kms_kv_list_dup (const kms_kv_list_t *lst) + } + + dup = malloc (sizeof (kms_kv_list_t)); ++ KMS_ASSERT (dup); ++ + dup->size = dup->len = lst->len; + dup->kvs = malloc (lst->len * sizeof (kms_kv_t)); ++ KMS_ASSERT (dup->kvs); ++ + + for (i = 0; i < lst->len; i++) { + kv_init (&dup->kvs[i], lst->kvs[i].key, lst->kvs[i].value); +diff --git a/src/third_party/kms-message/src/kms_message/kms_message.h b/src/third_party/kms-message/src/kms_message/kms_message.h +index 6ea95dd04c..8048528f2e 100644 +--- a/src/third_party/kms-message/src/kms_message/kms_message.h ++++ b/src/third_party/kms-message/src/kms_message/kms_message.h +@@ -17,6 +17,8 @@ + #ifndef KMS_MESSAGE_H + #define KMS_MESSAGE_H + ++#include <sys/types.h> ++ + #include "kms_message_defines.h" + #include "kms_request_opt.h" + #include "kms_request.h" +diff --git a/src/third_party/kms-message/src/kms_message/kms_message_defines.h b/src/third_party/kms-message/src/kms_message/kms_message_defines.h +index a4d019bd77..a539d531ef 100644 +--- a/src/third_party/kms-message/src/kms_message/kms_message_defines.h ++++ b/src/third_party/kms-message/src/kms_message/kms_message_defines.h +@@ -53,4 +53,14 @@ kms_message_cleanup (void); + } /* extern "C" */ + #endif + ++#ifdef _MSC_VER ++#include <basetsd.h> ++#pragma warning(disable : 4142) ++#ifndef _SSIZE_T_DEFINED ++#define _SSIZE_T_DEFINED ++typedef SSIZE_T ssize_t; ++#endif ++#pragma warning(default : 4142) ++#endif ++ + #endif /* KMS_MESSAGE_DEFINES_H */ +diff --git a/src/third_party/kms-message/src/kms_port.c b/src/third_party/kms-message/src/kms_port.c +new file mode 100644 +index 0000000000..ee9e6ed9c9 +--- /dev/null ++++ b/src/third_party/kms-message/src/kms_port.c +@@ -0,0 +1,33 @@ ++/* ++ * Copyright 2020-present MongoDB, Inc. ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#include "kms_port.h" ++#if defined(_WIN32) ++#include <stdlib.h> ++#include <string.h> ++char * kms_strndup (const char *src, size_t len) ++{ ++ char *dst = (char *) malloc (len + 1); ++ if (!dst) { ++ return 0; ++ } ++ ++ memcpy (dst, src, len); ++ dst[len] = '\0'; ++ ++ return dst; ++} ++#endif +\ No newline at end of file +diff --git a/src/third_party/kms-message/src/kms_port.h b/src/third_party/kms-message/src/kms_port.h +index c3cbbac369..2123a99dc9 100644 +--- a/src/third_party/kms-message/src/kms_port.h ++++ b/src/third_party/kms-message/src/kms_port.h +@@ -15,21 +15,18 @@ + * limitations under the License. + */ + +-#if defined(_WIN32) +-#define strcasecmp _stricmp +- +-inline char * +-strndup (const char *src, size_t len) +-{ +- char *dst = (char *) malloc (len + 1); +- if (!dst) { +- return 0; +- } +- +- memcpy (dst, src, len); +- dst[len] = '\0'; ++#ifndef KMS_PORT_H ++#define KMS_PORT_H + +- return dst; +-} ++#include <stddef.h> + ++#if defined(_WIN32) ++#define kms_strcasecmp _stricmp ++char * ++kms_strndup (const char *src, size_t len); ++#else ++#define kms_strndup strndup ++#define kms_strcasecmp strcasecmp + #endif ++ ++#endif /* KMS_PORT_H */ +\ No newline at end of file +diff --git a/src/third_party/kms-message/src/kms_request.c b/src/third_party/kms-message/src/kms_request.c +index fa2d487123..ac2b07ea6b 100644 +--- a/src/third_party/kms-message/src/kms_request.c ++++ b/src/third_party/kms-message/src/kms_request.c +@@ -61,6 +61,7 @@ kms_request_new (const char *method, + kms_request_t *request = calloc (1, sizeof (kms_request_t)); + const char *question_mark; + ++ KMS_ASSERT (request); + /* parsing may set failed to true */ + request->failed = false; + +@@ -92,10 +93,14 @@ kms_request_new (const char *method, + request->header_fields = kms_kv_list_new (); + request->auto_content_length = true; + +- kms_request_set_date (request, NULL); ++ if (!kms_request_set_date (request, NULL)) { ++ return request; ++ } + + if (opt && opt->connection_close) { +- kms_request_add_header_field (request, "Connection", "close"); ++ if (!kms_request_add_header_field (request, "Connection", "close")) { ++ return request; ++ } + } + + if (opt && opt->crypto.sha256) { +@@ -164,7 +169,9 @@ kms_request_set_date (kms_request_t *request, const struct tm *tm) + kms_request_str_set_chars (request->date, buf, sizeof "YYYYmmDD" - 1); + kms_request_str_set_chars (request->datetime, buf, sizeof AMZ_DT_FORMAT - 1); + kms_kv_list_del (request->header_fields, "X-Amz-Date"); +- kms_request_add_header_field (request, "X-Amz-Date", buf); ++ if (!kms_request_add_header_field (request, "X-Amz-Date", buf)) { ++ return false; ++ } + + return true; + } +@@ -309,7 +316,8 @@ append_canonical_headers (kms_kv_list_t *lst, kms_request_str_t *str) + * values in headers that have multiple values." */ + for (i = 0; i < lst->len; i++) { + kv = &lst->kvs[i]; +- if (previous_key && 0 == strcasecmp (previous_key->str, kv->key->str)) { ++ if (previous_key && ++ 0 == kms_strcasecmp (previous_key->str, kv->key->str)) { + /* duplicate header */ + kms_request_str_append_char (str, ','); + kms_request_str_append_stripped (str, kv->value); +@@ -339,12 +347,13 @@ append_signed_headers (kms_kv_list_t *lst, kms_request_str_t *str) + + for (i = 0; i < lst->len; i++) { + kv = &lst->kvs[i]; +- if (previous_key && 0 == strcasecmp (previous_key->str, kv->key->str)) { ++ if (previous_key && ++ 0 == kms_strcasecmp (previous_key->str, kv->key->str)) { + /* duplicate header */ + continue; + } + +- if (0 == strcasecmp (kv->key->str, "connection")) { ++ if (0 == kms_strcasecmp (kv->key->str, "connection")) { + continue; + } + +@@ -412,7 +421,8 @@ finalize (kms_request_t *request) + static int + cmp_header_field_names (const void *a, const void *b) + { +- return strcasecmp (((kms_kv_t *) a)->key->str, ((kms_kv_t *) b)->key->str); ++ return kms_strcasecmp (((kms_kv_t *) a)->key->str, ++ ((kms_kv_t *) b)->key->str); + } + + static kms_kv_list_t * +@@ -447,6 +457,7 @@ kms_request_get_canonical (kms_request_t *request) + kms_request_str_append_newline (canonical); + normalized = kms_request_str_path_normalized (request->path); + kms_request_str_append_escaped (canonical, normalized, false); ++ kms_request_str_destroy (normalized); + kms_request_str_append_newline (canonical); + append_canonical_query (request, canonical); + kms_request_str_append_newline (canonical); +@@ -454,12 +465,14 @@ kms_request_get_canonical (kms_request_t *request) + append_canonical_headers (lst, canonical); + kms_request_str_append_newline (canonical); + append_signed_headers (lst, canonical); +- kms_request_str_append_newline (canonical); +- kms_request_str_append_hashed ( +- &request->crypto, canonical, request->payload); +- +- kms_request_str_destroy (normalized); + kms_kv_list_destroy (lst); ++ kms_request_str_append_newline (canonical); ++ if (!kms_request_str_append_hashed ( ++ &request->crypto, canonical, request->payload)) { ++ KMS_ERROR (request, "could not generate hash"); ++ kms_request_str_destroy (canonical); ++ return NULL; ++ } + + return kms_request_str_detach (canonical); + } +@@ -514,6 +527,10 @@ kms_request_get_string_to_sign (kms_request_t *request) + kms_request_str_append_chars (sts, "/aws4_request\n", -1); + + creq = kms_request_str_wrap (kms_request_get_canonical (request), -1); ++ if (!creq) { ++ goto done; ++ } ++ + if (!kms_request_str_append_hashed (&request->crypto, sts, creq)) { + goto done; + } +diff --git a/src/third_party/kms-message/src/kms_request_str.c b/src/third_party/kms-message/src/kms_request_str.c +index 0f7c19c972..65207d2f4f 100644 +--- a/src/third_party/kms-message/src/kms_request_str.c ++++ b/src/third_party/kms-message/src/kms_request_str.c +@@ -51,10 +51,13 @@ kms_request_str_t * + kms_request_str_new (void) + { + kms_request_str_t *s = malloc (sizeof (kms_request_str_t)); ++ KMS_ASSERT (s); + + s->len = 0; + s->size = 16; + s->str = malloc (s->size); ++ KMS_ASSERT (s->str); ++ + s->str[0] = '\0'; + + return s; +@@ -64,11 +67,15 @@ kms_request_str_t * + kms_request_str_new_from_chars (const char *chars, ssize_t len) + { + kms_request_str_t *s = malloc (sizeof (kms_request_str_t)); ++ KMS_ASSERT (s); ++ + size_t actual_len; + + actual_len = len < 0 ? strlen (chars) : (size_t) len; + s->size = actual_len + 1; + s->str = malloc (s->size); ++ KMS_ASSERT (s->str); ++ + memcpy (s->str, chars, actual_len); + s->str[actual_len] = '\0'; + s->len = actual_len; +@@ -86,6 +93,8 @@ kms_request_str_wrap (char *chars, ssize_t len) + } + + s = malloc (sizeof (kms_request_str_t)); ++ KMS_ASSERT (s); ++ + + s->str = chars; + s->len = len < 0 ? strlen (chars) : (size_t) len; +@@ -148,8 +157,10 @@ kms_request_str_t * + kms_request_str_dup (kms_request_str_t *str) + { + kms_request_str_t *dup = malloc (sizeof (kms_request_str_t)); ++ KMS_ASSERT (dup); ++ + +- dup->str = strndup (str->str, str->len); ++ dup->str = kms_strndup (str->str, str->len); + dup->len = str->len; + dup->size = str->len + 1; + +diff --git a/src/third_party/kms-message/src/kms_request_str.h b/src/third_party/kms-message/src/kms_request_str.h +index f053a595aa..0898f59067 100644 +--- a/src/third_party/kms-message/src/kms_request_str.h ++++ b/src/third_party/kms-message/src/kms_request_str.h +@@ -25,11 +25,6 @@ + #include <stdint.h> + #include <string.h> + +-#if defined(_WIN32) +-#include <basetsd.h> +-typedef SSIZE_T ssize_t; +-#endif // _WIN32 +- + typedef struct { + char *str; + size_t len; +diff --git a/src/third_party/kms-message/src/kms_response_parser.c b/src/third_party/kms-message/src/kms_response_parser.c +index 31e4868a68..6f86fac854 100644 +--- a/src/third_party/kms-message/src/kms_response_parser.c ++++ b/src/third_party/kms-message/src/kms_response_parser.c +@@ -1,7 +1,7 @@ + #include "kms_message/kms_response_parser.h" + #include "kms_message_private.h" + +-#include "kms_message_private.h" ++#include <errno.h> + #include <limits.h> + #include <stdio.h> + #include <stdlib.h> +@@ -24,6 +24,7 @@ _parser_init (kms_response_parser_t *parser) + parser->raw_response = kms_request_str_new (); + parser->content_length = -1; + parser->response = calloc (1, sizeof (kms_response_t)); ++ KMS_ASSERT (parser->response); + parser->response->headers = kms_kv_list_new (); + parser->state = PARSING_STATUS_LINE; + parser->start = 0; +@@ -34,6 +35,8 @@ kms_response_parser_t * + kms_response_parser_new (void) + { + kms_response_parser_t *parser = malloc (sizeof (kms_response_parser_t)); ++ KMS_ASSERT (parser); ++ + _parser_init (parser); + return parser; + } +@@ -59,11 +62,26 @@ static bool + _parse_int (const char *str, int *result) + { + char *endptr = NULL; ++ int64_t long_result; + +- *result = (int) strtol (str, &endptr, 10); +- if (*endptr) { ++ errno = 0; ++ long_result = strtol (str, &endptr, 10); ++ if (endptr == str) { ++ /* No digits were parsed. Consider this an error */ ++ return false; ++ } ++ if (endptr != NULL && *endptr != '\0') { ++ /* endptr points to the first invalid character. */ ++ return false; ++ } ++ if (errno == EINVAL || errno == ERANGE) { ++ return false; ++ } ++ if (long_result > INT32_MAX || long_result < INT32_MIN) { + return false; + } ++ *result = (int) long_result; ++ + return true; + } + +@@ -72,6 +90,8 @@ static bool + _parse_int_from_view (const char *str, int start, int end, int *result) + { + char *num_str = malloc (end - start + 1); ++ KMS_ASSERT (num_str); ++ + bool ret; + + strncpy (num_str, str + start, end - start); +diff --git a/src/third_party/scripts/kms_message_get_sources.sh b/src/third_party/scripts/kms_message_get_sources.sh +index 6ad2fbb0e6..52ce21b9dd 100755 +--- a/src/third_party/scripts/kms_message_get_sources.sh ++++ b/src/third_party/scripts/kms_message_get_sources.sh +@@ -18,7 +18,7 @@ if grep -q Microsoft /proc/version; then + fi + + NAME=libmongocrypt +-REVISION=59c8c17bbdfa1cf0fdec60cfdde73a437a868221 ++REVISION=052f7fc610f0cea83a2adf3dd263a5ff04833371 + + if grep -q Microsoft /proc/version; then + SRC_ROOT=$(wslpath -u $(powershell.exe -Command "Get-ChildItem Env:TEMP | Get-Content | Write-Host")) +-- +2.24.0 + diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-stacktrace-Define-ARCH_BITS-for-x86.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-stacktrace-Define-ARCH_BITS-for-x86.patch new file mode 100644 index 000000000..a92883516 --- /dev/null +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-stacktrace-Define-ARCH_BITS-for-x86.patch @@ -0,0 +1,29 @@ +From efd79bda1b85a5a4398a71e5ea2bc00ee4b0ea46 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 15 Sep 2020 18:20:27 -0700 +Subject: [PATCH] stacktrace: Define ARCH_BITS for x86 + +stacktrace_somap.cpp:92:33: error: 'ELFCLASSARCH_BITS' was not declared in this scope + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/mongo/util/stacktrace_somap.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mongo/util/stacktrace_somap.cpp b/src/mongo/util/stacktrace_somap.cpp +index f7ba66a142..2231948ce8 100644 +--- a/src/mongo/util/stacktrace_somap.cpp ++++ b/src/mongo/util/stacktrace_somap.cpp +@@ -83,7 +83,7 @@ void addUnameToSoMap(BSONObjBuilder* soMap) { + #define ARCH_BITS __ELF_NATIVE_CLASS + #elif defined(__x86_64__) || defined(__aarch64__) + #define ARCH_BITS 64 +-#elif defined(__arm__) ++#elif defined(__i386__) || defined(__arm__) + #define ARCH_BITS 32 + #else + #error Unknown target architecture. +-- +2.28.0 + diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch index 869d2849d..57f4168f5 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch @@ -1,4 +1,4 @@ -From 73c6374ceb0c062e91210cc9ef3e0e9fa30ee514 Mon Sep 17 00:00:00 2001 +From 28f34191eef1e70c24d2f81b66e4dd40dbefcd35 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sat, 2 Sep 2017 12:42:30 -0700 Subject: [PATCH 04/10] Add a definition for the macro __ELF_NATIVE_CLASS @@ -6,17 +6,18 @@ Subject: [PATCH 04/10] Add a definition for the macro __ELF_NATIVE_CLASS It depends on the native arch's word size. Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> --- src/mongo/util/stacktrace_posix.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mongo/util/stacktrace_posix.cpp b/src/mongo/util/stacktrace_posix.cpp -index 1d7b3d7..f81e329 100644 +index 531e21bdc2..fa611499e4 100644 --- a/src/mongo/util/stacktrace_posix.cpp +++ b/src/mongo/util/stacktrace_posix.cpp -@@ -39,6 +39,15 @@ +@@ -42,6 +42,15 @@ + #include <iostream> #include <string> - #include <sys/utsname.h> +#if !defined(__GLIBC__) +#if defined __x86_64__ && !defined __ILP32__ @@ -28,8 +29,8 @@ index 1d7b3d7..f81e329 100644 +#endif + #include "mongo/base/init.h" + #include "mongo/bson/json.h" #include "mongo/config.h" - #include "mongo/db/jsobj.h" -- -2.7.4 +2.24.0 diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch index 3a27aacfe..910ef0b5f 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch @@ -2,7 +2,7 @@ Index: git/SConstruct =================================================================== --- git.orig/SConstruct +++ git/SConstruct -@@ -884,6 +884,14 @@ env_vars.Add('WINDOWS_OPENSSL_BIN', +@@ -977,6 +977,14 @@ env_vars.Add('WINDOWS_OPENSSL_BIN', help='Sets the path to the openssl binaries for packaging', default='c:/openssl/bin') diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch index ae84bcb56..e4ae30776 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch @@ -15,15 +15,16 @@ src/mongo/util/net/ssl_manager.cpp:575:79: error: invalid conversion from 'size_ if (mongoUnsignedAddOverflow64(tagAndLengthByteCount, derLength, outLength) || Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> +Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> --- src/mongo/util/net/ssl_manager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp -index b93ebe84a4a3..3511eb5d998f 100644 +index 455a1662a5..e8497bc0d1 100644 --- a/src/mongo/util/net/ssl_manager.cpp +++ b/src/mongo/util/net/ssl_manager.cpp -@@ -782,7 +782,7 @@ class DERToken { +@@ -810,7 +810,7 @@ public: * * Returns a DERToken which consists of the (tag, length, value) tuple. */ @@ -32,7 +33,7 @@ index b93ebe84a4a3..3511eb5d998f 100644 private: DERType _type{DERType::EndOfContent}; -@@ -799,7 +799,7 @@ struct DataType::Handler<DERToken> { +@@ -827,7 +827,7 @@ struct DataType::Handler<DERToken> { size_t length, size_t* advanced, std::ptrdiff_t debug_offset) { @@ -41,7 +42,7 @@ index b93ebe84a4a3..3511eb5d998f 100644 auto swPair = DERToken::parse(ConstDataRange(ptr, length), &outLength); -@@ -844,7 +844,7 @@ StatusWith<std::string> readDERString(ConstDataRangeCursor& cdc) { +@@ -889,7 +889,7 @@ StatusWith<DERInteger> readDERInt(ConstDataRangeCursor& cdc) { } @@ -50,3 +51,6 @@ index b93ebe84a4a3..3511eb5d998f 100644 const size_t kTagLength = 1; const size_t kTagLengthAndInitialLengthByteLength = kTagLength + 1; +-- +2.24.0 + diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch index 15bd7da70..1a7bf0fc5 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch @@ -1,4 +1,4 @@ -From c9fc9e9a44b0fb764ce86a5e57f17d3c5bbfd8cd Mon Sep 17 00:00:00 2001 +From 298d958148f1fb2bb7725fed15c68c09677c14c9 Mon Sep 17 00:00:00 2001 From: Vincent Prince <vincent.prince.fr@gmail.com> Date: Mon, 16 Sep 2019 13:37:10 +0200 Subject: [PATCH 05/10] Add alises for arm64 which is same as aarch64 @@ -12,10 +12,10 @@ Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com> 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/SConstruct b/SConstruct -index e63cf15..5593c78 100644 +index 448939bdd0..abfd816f3e 100644 --- a/SConstruct +++ b/SConstruct -@@ -1129,6 +1129,7 @@ elif endian == "big": +@@ -1228,6 +1228,7 @@ if endian == "auto": processor_macros = { 'arm' : { 'endian': 'little', 'defines': ('__arm__',) }, 'aarch64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')}, @@ -24,10 +24,10 @@ index e63cf15..5593c78 100644 'ppc64le' : { 'endian': 'little', 'defines': ('__powerpc64__',)}, 's390x' : { 'endian': 'big', 'defines': ('__s390x__',)}, diff --git a/src/third_party/IntelRDFPMathLib20U1/SConscript b/src/third_party/IntelRDFPMathLib20U1/SConscript -index f23c071..fb82cd6 100644 +index 58e1b7ba65..bffe83b462 100644 --- a/src/third_party/IntelRDFPMathLib20U1/SConscript +++ b/src/third_party/IntelRDFPMathLib20U1/SConscript -@@ -308,7 +308,7 @@ if processor == 'i386' or processor == 'emscripten': +@@ -309,7 +309,7 @@ if processor == 'i386' or processor == 'emscripten': elif processor == 'arm': cpp_defines['IA32'] = '1' cpp_defines['ia32'] = '1' @@ -37,7 +37,7 @@ index f23c071..fb82cd6 100644 cpp_defines['EFI2'] = '1' # Using 64 bit little endian diff --git a/src/third_party/wiredtiger/SConscript b/src/third_party/wiredtiger/SConscript -index cdd090b..97a1b3b 100644 +index d6bd665e23..2f1e656a19 100644 --- a/src/third_party/wiredtiger/SConscript +++ b/src/third_party/wiredtiger/SConscript @@ -152,7 +152,7 @@ condition_map = { @@ -50,5 +50,5 @@ index cdd090b..97a1b3b 100644 'X86_HOST' : env['TARGET_ARCH'] == 'x86_64', 'ZSERIES_HOST' : env['TARGET_ARCH'] == 's390x', -- -2.7.4 +2.24.0 diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb index 58841ef31..a15349848 100644 --- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb +++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb @@ -9,12 +9,13 @@ DEPENDS = "openssl libpcap zlib boost curl python3 \ python3-psutil-native python3-regex-native \ " -inherit scons dos2unix siteinfo python3native +inherit scons dos2unix siteinfo python3native systemd useradd -PV = "4.2.2" -#v4.2.2 -SRCREV = "a0bbbff6ada159e19298d37946ac8dc4b497eadf" -SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.2 \ +PV = "4.4.1" +#v4.4.1 +SRCREV = "ad91a93a5a31e175f5cbf8c69561e788bbc55ce1" +SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.4 \ + file://0001-kms-message-bump-libmongocrypto-to-v1.0.4.patch \ file://0001-Tell-scons-to-use-build-settings-from-environment-va.patch \ file://0001-Use-long-long-instead-of-int64_t.patch \ file://0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch \ @@ -24,6 +25,8 @@ SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.2 \ file://0001-Support-deprecated-resolver-functions.patch \ file://0003-Fix-unknown-prefix-env.patch \ file://1296.patch \ + file://0001-Fix-compilation-with-fno-common.patch \ + file://0001-stacktrace-Define-ARCH_BITS-for-x86.patch \ " SRC_URI_append_libc-musl ="\ file://0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch \ @@ -35,6 +38,7 @@ SRC_URI_append_toolchain-clang = "\ file://0001-asio-Dont-use-experimental-with-clang.patch \ " + S = "${WORKDIR}/git" COMPATIBLE_HOST ?= '(x86_64|i.86|powerpc64|arm|aarch64).*-linux' @@ -51,26 +55,65 @@ PACKAGECONFIG[tcmalloc] = "--use-system-tcmalloc,--allocator=system,gperftools," PACKAGECONFIG[shell] = ",--js-engine=none,," PACKAGECONFIG[system-pcre] = "--use-system-pcre,,libpcre," -EXTRA_OESCONS = "--prefix=${D}${prefix} \ +EXTRA_OESCONS = "PREFIX=${prefix} \ + DESTDIR=${D} \ LIBPATH=${STAGING_LIBDIR} \ LINKFLAGS='${LDFLAGS}' \ CXXFLAGS='${CXXFLAGS}' \ TARGET_ARCH=${TARGET_ARCH} \ + MONGO_VERSION=${PV} \ + OBJCOPY=${OBJCOPY} \ --ssl \ --disable-warnings-as-errors \ --use-system-zlib \ --nostrip \ --endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \ --wiredtiger=${@['off','on'][d.getVar('SITEINFO_BITS') != '32']} \ - ${PACKAGECONFIG_CONFARGS} \ - core" + --separate-debug \ + ${PACKAGECONFIG_CONFARGS}" + + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} = "--system --no-create-home --home-dir /var/run/${BPN} --shell /bin/false --user-group ${BPN}" + scons_do_compile() { - ${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} ${EXTRA_OESCONS} || \ + ${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} ${EXTRA_OESCONS} install-core || \ die "scons build execution failed." } scons_do_install() { - ${STAGING_BINDIR_NATIVE}/scons install ${EXTRA_OESCONS}|| \ - die "scons install execution failed." + # install binaries + install -d ${D}${bindir} + for i in mongod mongos mongo + do + if [ -f ${B}/build/opt/mongo/${i} ] + then + install -m 0755 ${B}/build/opt/mongo/${i} ${D}${bindir}/${i} + else + bbnote "${i} does not exist" + fi + done + + # install config + install -d ${D}${sysconfdir} + install -m 0644 ${S}/debian/mongod.conf ${D}${sysconfdir}/ + + # install systemd service + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${S}/debian/mongod.service ${D}${systemd_system_unitdir} + + # install mongo data folder + install -m 755 -d ${D}${localstatedir}/lib/${BPN} + chown ${PN}:${PN} ${D}${localstatedir}/lib/${BPN} + + # Log files + install -m 755 -d ${D}${localstatedir}/log/${BPN} + chown ${PN}:${PN} ${D}${localstatedir}/log/${BPN} } + +CONFFILES_${PN} = "${sysconfdir}/mongod.conf" + +SYSTEMD_SERVICE_${PN} = "mongod.service" + + diff --git a/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend b/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend new file mode 100644 index 000000000..b39a4d68f --- /dev/null +++ b/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend @@ -0,0 +1,3 @@ +RDEPENDS_packagegroup-meta-oe-devtools += "\ + valijson \ +" diff --git a/meta-openembedded/meta-oe/recipes-devtools/valijson/valijson_0.3.bb b/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-devtools/valijson/valijson_0.3.bb index 049cdeffc..049cdeffc 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/valijson/valijson_0.3.bb +++ b/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-devtools/valijson/valijson_0.3.bb diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.21.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.22.bb index 83f38fc7b..b50ed9f27 100644 --- a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.21.bb +++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.22.bb @@ -22,7 +22,7 @@ PACKAGECONFIG_NUMA_armeb = "" PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}" PACKAGECONFIG[numa] = ",--disable-numa,numactl" -SRCREV = "d13596b225baf61425a9ca92b0583fc3fa97765d" +SRCREV = "477b6753ad068983d49fea0abc91fab82da9bad0" SRC_URI = "git://git.kernel.dk/fio.git \ " diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.7.bb b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.9.bb index c7ad91b24..d969555c2 100644 --- a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.7.bb +++ b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.9.bb @@ -9,13 +9,13 @@ SECTION = "console/network" BUGTRACKER = "https://github.com/esnet/iperf/issues" AUTHOR = "ESNET <info@es.net>, Lawrence Berkeley National Laboratory <websupport@lbl.gov>" LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=f9088fe7ffdccd042f7645f1012d7f70" +LIC_FILES_CHKSUM = "file://LICENSE;md5=b7fb682e9941a49f1214dcd7441410d7" SRC_URI = "git://github.com/esnet/iperf.git \ file://0002-Remove-pg-from-profile_CFLAGS.patch \ " -SRCREV = "dfcea9f6a09ead01089a3c9d20c7032f2c0af2c1" +SRCREV = "1f8fb13297f3e3e40169ebcd12e171167e394473" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch deleted file mode 100644 index 9d52b908e..000000000 --- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch +++ /dev/null @@ -1,41 +0,0 @@ -From d07d2f9601b49bb72cd4b36838f0c238bd1b0fc1 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 15 Jan 2020 18:45:09 -0800 -Subject: [PATCH] tests: add explicit permissions to open() call - -Fixes -gethugepagesizes.c:227:35: error: open with O_CREAT in second argument needs 3 arguments -| fd = open(fname, O_WRONLY|O_CREAT); -| ^ - -Upstream-Status: Submitted [https://groups.google.com/forum/#!topic/libhugetlbfs/anNtDXbQKro] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - tests/gethugepagesizes.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tests/gethugepagesizes.c b/tests/gethugepagesizes.c -index 9551b38..5777265 100644 ---- a/tests/gethugepagesizes.c -+++ b/tests/gethugepagesizes.c -@@ -223,7 +223,7 @@ void setup_fake_data(long sizes[], int n_elem) - FAIL("mkdtemp: %s", strerror(errno)); - - sprintf(fname, "%s/meminfo-none", fake_meminfo); -- fd = open(fname, O_WRONLY|O_CREAT); -+ fd = open(fname, O_WRONLY|O_CREAT, 0600); - if (fd < 0) - FAIL("open: %s", strerror(errno)); - if (write(fd, meminfo_base, -@@ -233,7 +233,7 @@ void setup_fake_data(long sizes[], int n_elem) - FAIL("close: %s", strerror(errno)); - - sprintf(fname, "%s/meminfo-hugepages", fake_meminfo); -- fd = open(fname, O_WRONLY|O_CREAT); -+ fd = open(fname, O_WRONLY|O_CREAT, 0600); - if (fd < 0) - FAIL("open: %s", strerror(errno)); - if (write(fd, meminfo_base, --- -2.25.0 - diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb index 4768d7b63..b349096ec 100644 --- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb +++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb @@ -7,10 +7,10 @@ DEPENDS = "sysfsutils" RDEPENDS_${PN} += "bash python3-core" RDEPENDS_${PN}-tests += "bash python3-core" -PV = "2.22" +PV = "2.23" PE = "1" -SRCREV = "e6499ff92b4a7dcffbd131d1f5d24933e48c3f20" +SRCREV = "6b126a4d7da9490fa40fe7e1b962edcb939feddc" SRC_URI = " \ git://github.com/libhugetlbfs/libhugetlbfs.git;protocol=https \ file://skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch \ @@ -24,7 +24,6 @@ SRC_URI = " \ file://0004-shm.c-Mark-glibc-specific-changes-so.patch \ file://0005-Include-dirent.h-for-ino_t.patch \ file://0006-include-limits.h-for-PATH_MAX.patch \ - file://0001-tests-add-explicit-permissions-to-open-call.patch \ file://0001-huge_page_setup_helper-use-python3-interpreter.patch \ " diff --git a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb index 7e20b7da6..171ac31ac 100644 --- a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb +++ b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb @@ -5,7 +5,7 @@ LICENSE = "GPLv2 & GPL-2.0-with-lmbench-restriction" LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \ file://COPYING-2;md5=8e9aee2ccc75d61d107e43794a25cdf9" -inherit autotools-brokensep +inherit autotools-brokensep update-alternatives DEPENDS += "libtirpc" CFLAGS += "-I${STAGING_INCDIR}/tirpc" @@ -89,3 +89,7 @@ pkg_postinst_${PN} () { RDEPENDS_${PN} = "perl" FILES_${PN} += "${datadir}/lmbench" + +ALTERNATIVE_${PN} = "stream" +ALTERNATIVE_LINK_NAME[stream] = "${bindir}/stream" + diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.8.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.9.bb index b1e6fea2f..25500e650 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.8.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.9.bb @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09" DEPENDS = "ell" SRC_URI = "git://git.kernel.org/pub/scm/network/wireless/iwd.git" -SRCREV = "a01754f56aacdc641c819f983c3c0ad374be77b2" +SRCREV = "aa3dc1b95348dea177e9d8c2c3063b29e20fe2e9" S = "${WORKDIR}/git" inherit autotools manpages pkgconfig python3native systemd @@ -41,7 +41,7 @@ do_install_append() { FILES_${PN} += " \ ${datadir}/dbus-1 \ - ${nonarch_base_libdir}/modules-load.d \ + ${nonarch_libdir}/modules-load.d \ ${systemd_unitdir}/network \ " diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.26.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.26.4.bb index 3a1b70b80..f778ffac4 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.26.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.26.4.bb @@ -14,8 +14,7 @@ inherit autotools pkgconfig bash-completion gobject-introspection SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz" -SRC_URI[md5sum] = "8da95a97e893311878f8ce12dcf8fad0" -SRC_URI[sha256sum] = "7f0429e0ae58792e21512d09ca2412537840ea42696762795af1284a65fd6e40" +SRC_URI[sha256sum] = "c0adcb84ba452e3e13edeb3f94f7b003ea927b354bc187629e05efb333ce270b" PACKAGECONFIG ??= "udev mbim" PACKAGECONFIG[udev] = ",--without-udev,libgudev" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/Use-cross-cpp-in-incdefs.patch b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/Use-cross-cpp-in-incdefs.patch new file mode 100644 index 000000000..876088649 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/Use-cross-cpp-in-incdefs.patch @@ -0,0 +1,26 @@ +From 8a4cad5e2f2cbb6a34bdc6e877fe499502b8c4c8 Mon Sep 17 00:00:00 2001 +From: Marcel Ziswiler <marcel.ziswiler@toradex.com> +Date: Fri, 23 Dec 2016 18:12:29 +0100 +Subject: [PATCH] linuxptp: Use cross cpp in incdefs + +Use cross cpp incdefs.sh shell script since we are doing cross compiling +we need to ensure we use correct setttings from toolchain + +Upstream-Status: Inappropriate [OE-Specific] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + + makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/incdefs.sh ++++ b/incdefs.sh +@@ -27,7 +27,7 @@ user_flags() + printf " -D_GNU_SOURCE" + + # Get list of directories searched for header files. +- dirs=$(echo "" | ${CROSS_COMPILE}cpp -Wp,-v 2>&1 >/dev/null | grep ^" /") ++ dirs=$(${CPP} -Wp,-v -xc /dev/null 2>&1 >/dev/null | grep ^" /") + + # Look for clock_adjtime(). + for d in $dirs; do diff --git a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch deleted file mode 100644 index 02dbb2346..000000000 --- a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8a4cad5e2f2cbb6a34bdc6e877fe499502b8c4c8 Mon Sep 17 00:00:00 2001 -From: Marcel Ziswiler <marcel.ziswiler@toradex.com> -Date: Fri, 23 Dec 2016 18:12:29 +0100 -Subject: [PATCH] linuxptp: no incdefs using host headers - -Avoid using host headers via incdefs.sh shell script. - -Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> ---- - - makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/makefile b/makefile -index 8cdbd15..85174b8 100644 ---- a/makefile -+++ b/makefile -@@ -33,7 +33,7 @@ OBJECTS = $(OBJ) hwstamp_ctl.o phc2sys.o phc_ctl.o pmc.o pmc_common.o \ - SRC = $(OBJECTS:.o=.c) - DEPEND = $(OBJECTS:.o=.d) - srcdir := $(dir $(lastword $(MAKEFILE_LIST))) --incdefs := $(shell $(srcdir)/incdefs.sh) -+#incdefs := $(shell $(srcdir)/incdefs.sh) - version := $(shell $(srcdir)/version.sh $(srcdir)) - VPATH = $(srcdir) - --- -2.9.3 - diff --git a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.0.bb index 69dee1a2f..1472a671a 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.0.bb @@ -4,14 +4,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \ file://build-Allow-CC-and-prefix-to-be-overriden.patch \ - file://no-incdefs-using-host-headers.patch \ + file://Use-cross-cpp-in-incdefs.patch \ " SRC_URI[md5sum] = "1318805702eb6d59f9f247e1dd5ce12a" SRC_URI[sha256sum] = "d74ceca722c75bfff53c633425f926dd48eb04f4a089451b855155c016d15785" -EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} \ - EXTRA_CFLAGS='-D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC ${CFLAGS}'" +EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} EXTRA_CFLAGS='${CFLAGS}'" + +export KBUILD_OUTPUT="${RECIPE_SYSROOT}" do_install () { install -d ${D}/${bindir} diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.12.12.bb b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.14.2.bb index b0ab46f3f..d5fe9bf00 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.12.12.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.14.2.bb @@ -12,7 +12,7 @@ inherit gnomebase gettext systemd vala gobject-introspection bash-completion DEPENDS = "glib-2.0 libgudev intltool-native libxslt-native" SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz" -SRC_URI[sha256sum] = "a4fc4b33c0e8ae9372885f86fa033f3c1a89a76cd59a3458670eff1824222a3d" +SRC_URI[sha256sum] = "5fb5553aecd6eb9d6d8ecd130a24f3461e5f93c5f91a0e4ae0508b5228e8b0be" S = "${WORKDIR}/ModemManager-${PV}" PACKAGECONFIG ??= "mbim qmi \ @@ -30,7 +30,6 @@ PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi" EXTRA_OECONF = " \ --with-udev-base-dir=${nonarch_base_libdir}/udev \ " -EXTRA_OECONF_append_toolchain-clang = " --enable-more-warnings=no" FILES_${PN} += " \ ${datadir}/icons \ diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch deleted file mode 100644 index 12f9e7abc..000000000 --- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 96233a8382b9520293a48b08dc3b204a21205800 Mon Sep 17 00:00:00 2001 -From: Wang Mingyu <wangmy@cn.fujitsu.com> -Date: Fri, 24 Apr 2020 00:53:19 +0900 -Subject: [PATCH] Fix bug of free() with musl - -This fixes build error with musl C library: -/ubinux-dev/ubinux001/contribution/build/tmp/work/armv7vet2hf-neon-poky-linux-musleabi/paho-mqtt-c/1.3.2-r0/git/src/Heap.h:55:24: -error: expected declaration specifiers or '...' before string constant - 55 | #define free(x) myfree(__FILE__, __LINE__, x) - | ^~~~~~~~ -/ubinux-dev/ubinux001/contribution/build/tmp/work/armv7vet2hf-neon-poky-linux-musleabi/paho-mqtt-c/1.3.2-r0/git/src/Heap.h:55:34: -error: expected declaration specifiers or '...' before numeric constant - 55 | #define free(x) myfree(__FILE__, __LINE__, x) - | ^~~~~~~~ - -Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com> ---- - src/MQTTReasonCodes.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/MQTTReasonCodes.c b/src/MQTTReasonCodes.c -index 416eab5..479dbac 100644 ---- a/src/MQTTReasonCodes.c -+++ b/src/MQTTReasonCodes.c -@@ -16,10 +16,10 @@ - - #include "MQTTReasonCodes.h" - --#include "Heap.h" - #include "StackTrace.h" - - #include <memory.h> -+#include "Heap.h" - - #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) - --- -2.17.1 - diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.5.bb index 2d4e39bf9..673a24742 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.4.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.5.bb @@ -11,10 +11,9 @@ LIC_FILES_CHKSUM = " \ file://about.html;md5=e5662cbb5f8fd5c9faac526e4077898e \ " -SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http \ - file://0001-Fix-bug-of-free-with-musl.patch" +SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http" -SRCREV = "2d3d0941a9233889d4d5cc37f5182bbefea261ad" +SRCREV = "153dfd3a4a1d510697c5d55e169fa158db16e04a" DEPENDS = "openssl" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb index b985d39ab..473ceabcf 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb @@ -9,7 +9,7 @@ inherit pkgconfig DEPENDS = "wvstreams" RDEPENDS_${PN} = "ppp" -SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.bz2 \ +SRC_URI = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/${BPN}/${BP}.tar.bz2 \ file://typo_pon.wvdial.1.patch \ file://musl-support.patch \ " 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 20becaf57..57163ce65 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 @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605" DEPENDS = "zlib openssl (>= 0.9.8) dbus readline" DEPENDS_append_libc-musl = " argp-standalone libexecinfo" -SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \ +SRC_URI = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/${BPN}/${BP}.tar.gz \ file://04_signed_request.diff \ file://05_gcc.diff \ file://06_gcc-4.7.diff \ diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch index eb3dee4d3..3b0300c8a 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch +++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch @@ -1,6 +1,7 @@ +From 24ad50286a87833329213dc0b0e68c21aeeee95f Mon Sep 17 00:00:00 2001 From: Niko Mauno <niko.mauno@vaisala.com> -Date: Wed Apr 22 09:00:00 2020 +0300 -Subject: CMakeLists.txt: Avoid host-specific path to libsodium +Date: Wed, 22 Apr 2020 09:00:00 +0300 +Subject: [PATCH] CMakeLists.txt: Avoid host-specific path to libsodium Avoid propagating full build host specific path to generated ZeroMQTargets.cmake when building with libsodium, which changes the @@ -17,10 +18,16 @@ Upstream-Status: Pending Signed-off-by: Niko Mauno <niko.mauno@vaisala.com> +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e92141d..d0775c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -1210,7 +1210,7 @@ - target_link_libraries(libzmq ${OPTIONAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) +@@ -1428,7 +1428,7 @@ if(BUILD_SHARED) + endif() if(SODIUM_FOUND) - target_link_libraries(libzmq ${SODIUM_LIBRARIES}) @@ -28,8 +35,8 @@ Signed-off-by: Niko Mauno <niko.mauno@vaisala.com> # On Solaris, libsodium depends on libssp if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS") target_link_libraries(libzmq ssp) -@@ -1240,7 +1240,7 @@ - target_link_libraries(libzmq-static ${OPTIONAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) +@@ -1473,7 +1473,7 @@ if(BUILD_STATIC) + endif() if(SODIUM_FOUND) - target_link_libraries(libzmq-static ${SODIUM_LIBRARIES}) diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.3.bb index 02a4c04fd..a10500475 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.2.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.3.bb @@ -10,8 +10,8 @@ SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV} file://0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch \ file://run-ptest \ " -SRC_URI[md5sum] = "2047e917c2cc93505e2579bcba67a573" -SRC_URI[sha256sum] = "ebd7b5c830d6428956b67a0454a7f8cbed1de74b3b01e5c33c5378e22740f763" +SRC_URI[md5sum] = "78acc277d95e10812d71b2b3c3c3c9a9" +SRC_URI[sha256sum] = "9d9285db37ae942ed0780c016da87060497877af45094ff9e1a1ca736e3875a2" UPSTREAM_CHECK_URI = "https://github.com/${BPN}/libzmq/releases" 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 0812da1af..46cc935c6 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 @@ -4,7 +4,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" inherit packagegroup PROVIDES = "${PACKAGES}" -PACKAGES = ' \ +PACKAGES = "\ packagegroup-meta-oe \ packagegroup-meta-oe-benchmarks \ packagegroup-meta-oe-connectivity \ @@ -17,27 +17,32 @@ PACKAGES = ' \ packagegroup-meta-oe-kernel \ packagegroup-meta-oe-multimedia \ packagegroup-meta-oe-navigation \ + packagegroup-meta-oe-printing \ + packagegroup-meta-oe-shells \ packagegroup-meta-oe-security \ packagegroup-meta-oe-support \ packagegroup-meta-oe-test \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-gnome", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-graphics", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "ptest", "packagegroup-meta-oe-ptest-packages", "", d)} \ -' +" +#PACKAGES += "packagegroup-meta-oe-fortran-packages" RDEPENDS_packagegroup-meta-oe = "\ packagegroup-meta-oe-benchmarks \ + packagegroup-meta-oe-bsp \ packagegroup-meta-oe-connectivity \ packagegroup-meta-oe-core \ packagegroup-meta-oe-crypto \ - packagegroup-meta-oe-bsp \ packagegroup-meta-oe-dbs \ packagegroup-meta-oe-devtools \ packagegroup-meta-oe-extended \ packagegroup-meta-oe-kernel \ packagegroup-meta-oe-multimedia \ packagegroup-meta-oe-navigation \ + packagegroup-meta-oe-printing \ packagegroup-meta-oe-security \ + packagegroup-meta-oe-shells \ packagegroup-meta-oe-support \ packagegroup-meta-oe-test \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-gnome", "", d)} \ @@ -46,12 +51,31 @@ RDEPENDS_packagegroup-meta-oe = "\ " RDEPENDS_packagegroup-meta-oe-benchmarks = "\ - dhrystone iperf2 linpack phoronix-test-suite \ - tiobench bonnie++ fio iperf2 iperf3 lmbench s-suite whetstone \ - libc-bench memtester sysbench dbench iozone3 libhugetlbfs \ - nbench-byte tinymembench \ + bonnie++ \ + dbench \ + dhrystone \ + fio \ ${@bb.utils.contains("DISTRO_FEATURES", "x11 wayland opengl", "glmark2", "", d)} \ + iozone3 \ + iperf2 \ + iperf3 \ + libc-bench \ + libhugetlbfs \ + linpack \ + lmbench \ + memtester \ + nbench-byte \ + phoronix-test-suite \ + s-suite \ + stressapptest \ + sysbench \ + tinymembench \ + tiobench \ + whetstone \ " +RDEPENDS_packagegroup-meta-oe-benchmarks_append_armv7a = " cpuburn-arm" +RDEPENDS_packagegroup-meta-oe-benchmarks_append_armv7ve = " cpuburn-arm" +RDEPENDS_packagegroup-meta-oe-benchmarks_append_aarch64 = " cpuburn-arm" RDEPENDS_packagegroup-meta-oe-benchmarks_remove_mipsarch = "libhugetlbfs" RDEPENDS_packagegroup-meta-oe-benchmarks_remove_mips64 = "tinymembench" @@ -59,234 +83,820 @@ RDEPENDS_packagegroup-meta-oe-benchmarks_remove_mips64el = "tinymembench" RDEPENDS_packagegroup-meta-oe-benchmarks_remove_riscv64 = "libhugetlbfs" RDEPENDS_packagegroup-meta-oe-benchmarks_remove_riscv32 = "libhugetlbfs" +RDEPENDS_packagegroup-meta-oe-bsp ="\ + acpitool \ + cpufrequtils \ + edac-utils \ + flashrom \ + irda-utils \ + lmsensors-config-cgi \ + lmsensors-config-fancontrol \ + lmsensors-config-sensord \ + lmsensors \ + lsscsi \ + nvme-cli \ + pcmciautils \ + pointercal \ +" +RDEPENDS_packagegroup-meta-oe-bsp_append_x86 = " ledmon" +RDEPENDS_packagegroup-meta-oe-bsp_append_x86-64 = " ledmon" + +RDEPENDS_packagegroup-meta-oe-bsp_remove_libc-musl = "ledmon" +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_powerpc64le = "efivar efibootmgr" +RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv64 = "efivar efibootmgr" +RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv32 = "efivar efibootmgr" + RDEPENDS_packagegroup-meta-oe-connectivity ="\ - gammu hostapd irssi krb5 libev libimobiledevice \ - libmbim libmtp libndp libqmi libtorrent \ - libuv libwebsockets linuxptp loudmouth \ - modemmanager mosh \ - paho-mqtt-c phonet-utils rabbitmq-c rfkill rtorrent \ - ser2net smstools3 telepathy-glib thrift \ - usbmuxd zabbix zeromq \ + gammu \ + gattlib \ + gensio \ + hostapd \ + ifplugd \ + irssi \ + iwd \ + krb5 \ + libev \ + libimobiledevice \ + libmbim \ + libmtp \ + libndp \ + libnet \ + libqmi \ + libtorrent \ + libuv \ + libwebsockets \ + linuxptp \ + loudmouth \ + modemmanager \ + mosh \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "obex-data-server", "", d)} \ - libmikmod \ - obexftp openobex libnet \ + openobex \ + obexftp \ + packagegroup-tools-bluetooth \ + paho-mqtt-c \ + phonet-utils \ + rabbitmq-c \ + rfkill \ + rtorrent \ + ser2net \ + smstools3 \ + telepathy-glib \ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "telepathy-idle", "", d)} \ - " + thrift \ + usbmuxd \ + wifi-test-suite \ + zabbix \ + czmq \ + zeromq \ +" + RDEPENDS_packagegroup-meta-oe-connectivity_append_libc-glibc = " wvstreams wvdial" # dracut needs dracut -RDEPENDS_packagegroup-meta-oe-core ="\ - dbus-daemon-proxy libdbus-c++ \ - ell glibmm libsigc++-2.0 libxml++ distro-feed-configs \ - mm-common opencl-headers opencl-icd-loader \ - proxy-libintl usleep \ - ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "dbus-broker ndctl", "", d)} \ - " +RDEPENDS_packagegroup-meta-oe-core = "\ + ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "dbus-broker", "", d)} \ + dbus-daemon-proxy \ + libdbus-c++ \ + emlog \ + kernel-module-emlog \ + glibmm \ + libnfc \ + libsigc++-2.0 \ + libsigc++-3 \ + libxml++ \ + mdbus2 \ + distro-feed-configs \ + mm-common \ + ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "ndctl", "", d)} \ + opencl-icd-loader \ + proxy-libintl \ + safec \ + sdbus-c++-tools \ + sdbus-c++ \ + toybox \ + usleep \ +" +RDEPENDS_packagegroup-meta-oe-core_append_libc-glibc = " glfw" +RDEPENDS_packagegroup-meta-oe-core_remove_riscv64 = "safec" +RDEPENDS_packagegroup-meta-oe-core_remove_riscv32 = "safec" RDEPENDS_packagegroup-meta-oe-crypto ="\ - botan cryptsetup libkcapi libmcrypt \ - libsodium pkcs11-helper \ - " -RDEPENDS_packagegroup-meta-oe-bsp ="\ - acpitool cpufrequtils edac-utils efibootmgr \ - efivar flashrom lmsensors lmsensors-config \ - lsscsi nvme-cli pcmciautils pointercal \ - " -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_powerpc64le = "efivar efibootmgr" -RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv64 = "efivar efibootmgr" -RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv32 = "efivar efibootmgr" + botan \ + cryptsetup \ + libkcapi \ + libmcrypt \ + libsodium \ + pkcs11-helper \ +" RDEPENDS_packagegroup-meta-oe-dbs ="\ - leveldb libdbi mariadb mariadb-native \ - postgresql psqlodbc rocksdb soci \ - sqlite \ + leveldb \ + libdbi \ + mariadb \ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "mysql-python", "", d)} \ - " + postgresql \ + psqlodbc \ + rocksdb \ + soci \ + sqlite \ +" RDEPENDS_packagegroup-meta-oe-devtools ="\ - android-tools android-tools-conf bootchart breakpad \ - capnproto cgdb cscope ctags \ - debootstrap dmalloc flatbuffers \ - giflib grpc icon-slicer iptraf-ng jq jsoncpp jsonrpc json-spirit \ - kconfig-frontends lemon libedit libgee libsombok3 \ - libubox log4cplus lshw ltrace lua mcpp memstat mercurial \ - mpich msgpack-c nlohmann-json openocd pax-utils \ - ipc-run libdbd-mysql-perl libdbi-perl libio-pty-perl php \ - protobuf protobuf-c \ - rapidjson serialcheck sip3 tclap uftrace uw-imap valijson \ - xmlrpc-c yajl yasm \ - ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geany geany-plugins glade tk", "", d)} \ + abseil-cpp \ + breakpad \ + bootchart \ + android-tools-conf \ + android-tools \ + concurrencykit \ + cgdb \ + ctags \ + debootstrap \ + cjson \ + cloc \ + icon-slicer \ + cscope \ + dmalloc \ + ${@bb.utils.contains("PACKAGE_CLASSES", "package_rpm", "dnf-plugin-tui", "", d)} \ + doxygen \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geany-plugins geany", "", d)} \ + lemon \ + flatbuffers \ + libubox \ + ltrace \ + lua \ + luajit \ + mcpp \ + memstat \ + giflib \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "glade", "", d)} \ + grpc \ + guider \ + php \ + iptraf-ng \ + jq \ + json-spirit \ + serialcheck \ + tclap \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "tk", "", d)} \ + uw-imap \ + jsoncpp \ + jsonrpc \ + yajl \ + yajl \ + kconfig-frontends \ + ldns \ + libgee \ + libsombok3 \ + lshw \ + luaposix \ + capnproto-compiler \ + mpich \ + msgpack-c \ + mercurial \ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "nodejs", "", d)} \ - " + openocd \ + pax-utils \ + ipc-run \ + libdbd-mysql-perl \ + libdbi-perl \ + libdev-checklib-perl \ + libio-pty-perl \ + libjson-perl \ + libperlio-gzip-perl \ + ply \ + protobuf-c \ + protobuf \ + pugixml \ + python3-distutils-extra \ + rapidjson \ + sip3 \ + uftrace \ + libxerces-c \ + xerces-c-samples \ + xmlrpc-c \ + yasm \ + json-schema-validator \ +" +RDEPENDS_packagegroup-meta-oe-devtools_append_x86 = " cpuid msr-tools pmtools" +RDEPENDS_packagegroup-meta-oe-devtools_append_x86-64 = " cpuid msr-tools pcimem pmtools" +RDEPENDS_packagegroup-meta-oe-devtools_append_arm = " pcimem" +RDEPENDS_packagegroup-meta-oe-devtools_append_aarch64 = " pcimem" +RDEPENDS_packagegroup-meta-oe-devtools_remove_arm = "concurrencykit" RDEPENDS_packagegroup-meta-oe-devtools_remove_armv5 = "uftrace nodejs" -RDEPENDS_packagegroup-meta-oe-devtools_remove_mipsarch = "uftrace lshw" -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_powerpc64 = "android-tools uftrace lshw" -RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc64le = "android-tools uftrace lshw" -RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv64 = "breakpad ltrace nodejs uftrace lshw" -RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv32 = "breakpad ltrace nodejs uftrace lshw" +RDEPENDS_packagegroup-meta-oe-devtools_remove_mipsarch = "concurrencykit lshw ply uftrace" +RDEPENDS_packagegroup-meta-oe-devtools_remove_mips64 = "luajit nodejs" +RDEPENDS_packagegroup-meta-oe-devtools_remove_mips64el = "luajit nodejs" +RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc = "android-tools breakpad lshw luajit uftrace" +RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc64 = "android-tools lshw luajit uftrace" +RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc64le = "android-tools lshw luajit uftrace" +RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv64 = "breakpad concurrencykit lshw ltrace luajit nodejs ply uftrace" +RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv32 = "breakpad concurrencykit lshw ltrace luajit nodejs ply uftrace" +RDEPENDS_packagegroup-meta-oe-devtools_remove_aarch64 = "${@bb.utils.contains("TUNE_FEATURES", "crypto", "", "abseil-cpp", d)} concurrencykit" +RDEPENDS_packagegroup-meta-oe-devtools_remove_x86-64 = "${@bb.utils.contains("TUNE_FEATURES", "corei7", "", "abseil-cpp", d)}" +RDEPENDS_packagegroup-meta-oe-devtools_remove_x86 = "ply" RDEPENDS_packagegroup-meta-oe-extended ="\ - byacc cfengine cfengine-masterfiles cmpi-bindings \ - ddrescue dialog dumb-init enscript fluentbit \ - haveged hexedit hiredis hplip hwloc indent iotop isomd5sum \ - jansson konkretcmpi libblockdev libcec libconfig \ - libdivecomputer libplist libusbmuxd \ - liblockfile liblogging liblognorm libmodbus libmodbus \ - libpwquality libqb libuio \ - lockfile-progs logwatch lprng mailx md5deep \ - mraa nana nicstat \ - p7zip p8platform libfile-fnmatch-perl \ - rarpd redis rrdtool libfastjson librelp rsyslog sanlock \ - sblim-cmpi-devel sblim-sfc-common sblim-sfcc \ - scsirastools sgpio smartmontools snappy \ - can-utils libsocketcan tipcutils tiptop \ - tmux uml-utilities upm vlock volume-key wipe zlog zram \ ${@bb.utils.contains("DISTRO_FEATURES", "x11 wayland opengl", "boinc-client", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "x11", " libgxim gnuplot libwmf", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "bluez", "collectd", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-plugin-ccreds pam-plugin-ldapdb", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-ssh-agent-auth openwsman sblim-sfcb ", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "polkit polkit-group-rule-datetime ", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "polkit-group-rule-network ", "", d)} \ - ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "openlmi-tools", "", d)} \ - " -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" + brotli \ + byacc \ + cmpi-bindings \ + collectd \ + cfengine-masterfiles \ + cfengine \ + ddrescue \ + dialog \ + enscript \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gnuplot", "", d)} \ + dlt-daemon \ + docopt.cpp \ + iotop \ + dumb-init \ + konkretcmpi \ + figlet \ + libcec \ + libdivecomputer \ + fluentbit \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "libgxim", "", d)} \ + liblognorm \ + libmodbus \ + haveged \ + hexedit \ + hiredis \ + hplip \ + hwloc \ + libuio \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "libwmf", "", d)} \ + lprng \ + icewm \ + md5deep \ + indent \ + jansson \ + nana \ + nicstat \ + ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "openlmi-tools", "", d)} \ + ${@bb.utils.contains("DISTRO_FEATURES", "pam", "openwsman", "", d)} \ + p7zip \ + isomd5sum \ + jpnevulator \ + ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "polkit-group-rule-datetime polkit-group-rule-network polkit", "", d)} \ + rarpd \ + redis \ + libfastjson \ + librelp \ + sblim-cmpi-devel \ + sblim-sfc-common \ + ${@bb.utils.contains("DISTRO_FEATURES", "pam", "sblim-sfcb ", "", d)} \ + sblim-sfcc \ + libblockdev \ + sgpio \ + smartmontools \ + can-utils \ + canutils \ + libsocketcan \ + libconfig \ + uml-utilities \ + libidn \ + libqb \ + wipe \ + libzip \ + zram \ + libplist \ + libusbmuxd \ + liblockfile \ + liblogging \ + libnss-nisplus \ + libpwquality \ + ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "libreport", "", d)} \ + libserialport \ + libstatgrab \ + lockfile-progs \ + logwatch \ + mailx \ + mraa \ + ostree \ + ${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-plugin-ccreds pam-plugin-ldapdb pam-ssh-agent-auth", "", d)} \ + pegtl \ + libfile-fnmatch-perl \ + rrdtool \ + sanlock \ + scsirastools \ + sedutil \ + libsigrok \ + libsigrokdecode \ + sigrok-cli \ + snappy \ + tipcutils \ + tiptop \ + tmux \ + triggerhappy \ + upm \ + vlock \ + volume-key \ + wxwidgets \ + zlog \ + zstd \ + redis-plus-plus \ +" +RDEPENDS_packagegroup-meta-oe-extended_append_libc-musl = " libexecinfo" +RDEPENDS_packagegroup-meta-oe-extended_append_x86-64 = " pmdk libx86-1" +RDEPENDS_packagegroup-meta-oe-extended_append_x86 = " libx86-1" + +RDEPENDS_packagegroup-meta-oe-extended_remove_libc-musl = "libnss-nisplus sysdig" +RDEPENDS_packagegroup-meta-oe-extended_remove_mipsarch = "upm mraa minifi-cpp tiptop" +RDEPENDS_packagegroup-meta-oe-extended_remove_mips = "sysdig" +RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc = "upm mraa minifi-cpp" +RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64 = "upm mraa minifi-cpp" RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64le = "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_riscv64 = "upm mraa sysdig tiptop" +RDEPENDS_packagegroup-meta-oe-extended_remove_riscv32 = "upm mraa sysdig tiptop" RDEPENDS_packagegroup-meta-oe-gnome ="\ - atkmm gnome-common gnome-doc-utils-stub gtkmm \ - gtkmm3 pyxdg vte9 \ - " + atkmm \ + gcab \ + gnome-common \ + gmime \ + libjcat \ + gtk+ \ + gtkmm3 \ + gtkmm \ + libpeas \ + pyxdg \ + vte9 \ + gnome-theme-adwaita \ + libxmlb \ +" RDEPENDS_packagegroup-meta-oe-graphics ="\ - cairomm dietsplash directfb directfb-examples \ - ${@bb.utils.contains("PACKAGE_CLASSES", "package_rpm", "dnfdragora dnf-plugin-tui", "", d)} \ - fbgrab fbida fontforge fvwm glm gphoto2 libgphoto2 \ - gtkperf jasper leptonica libmng libsdl2-image libsdl2-mixer libsdl2-net \ - libsdl-gfx libsdl-image libsdl-mixer libsdl-net libsdl-ttf \ - libvncserver libyui libyui-ncurses lxdm numlockx openbox openjpeg \ - packagegroup-fonts-truetype pangomm qrencode takao-fonts terminus-font \ - tesseract tesseract-lang tigervnc tslib source-han-sans-cn-fonts \ - source-han-sans-jp-fonts source-han-sans-kr-fonts source-han-sans-tw-fonts ttf-abyssinica \ - libvdpau x11vnc xcursorgen xdotool \ - bdftopcf iceauth sessreg setxkbmap twm xclock xfontsel xgamma xkbevd xkbprint xkbutils \ - xlsatoms xlsclients xlsfonts xmag xmessage xrdb xrefresh xsetmode xsetroot xstdcmap \ - xterm xwd xwud xbitmaps xorg-sgml-doctools \ - font-adobe-100dpi font-adobe-utopia-100dpi \ - font-bh-100dpi font-bh-lucidatypewriter-100dpi font-bitstream-100dpi font-cursor-misc \ - font-misc-misc xorg-fonts-100dpi liblbxutil libxaw libxkbui libxpresent xserver-common \ - ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "freeglut libsdl2-ttf", "", d)} \ - " - + cairomm \ + directfb-examples \ + directfb \ + fbgrab \ + dietsplash \ + ${@bb.utils.contains("PACKAGE_CLASSES", "package_rpm", "dnfdragora", "", d)} \ + fontforge \ + fbida \ + ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "freeglut", "", d)} \ + ftgl \ + fvwm \ + gtkperf \ + gphoto2 \ + libgphoto2 \ + graphviz \ + gtkwave \ + jasper \ + libforms \ + lxdm \ + numlockx \ + openbox \ + packagegroup-fonts-truetype \ + qrencode \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "st", "", d)} \ + takao-fonts \ + leptonica \ + libvncserver \ + libmng \ + libsdl-gfx \ + libsdl-image \ + libsdl-mixer \ + libsdl-net \ + libsdl-ttf \ + libsdl2-image \ + libsdl2-mixer \ + libsdl2-net \ + ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "libsdl2-ttf", "", d)} \ + libsdl \ + ttf-arphic-uming \ + ttf-droid-sans ttf-droid-sans-mono ttf-droid-sans-fallback ttf-droid-sans-japanese ttf-droid-serif \ + ttf-abyssinica \ + source-han-sans-cn-fonts \ + source-han-sans-jp-fonts \ + source-han-sans-kr-fonts \ + source-han-sans-tw-fonts \ + source-code-pro-fonts \ + ttf-dejavu-sans \ + ttf-dejavu-sans-condensed \ + ttf-dejavu-sans-mono \ + ttf-dejavu-serif \ + ttf-dejavu-serif-condensed \ + ttf-dejavu-mathtexgyre \ + ttf-dejavu-common \ + ttf-gentium \ + ttf-hunky-sans \ + ttf-hunky-serif \ + ttf-lohit \ + ttf-inconsolata \ + ttf-liberation-sans-narrow \ + ttf-liberation-mono \ + ttf-liberation-sans \ + ttf-liberation-serif \ + ttf-lklug \ + ttf-noto-emoji-color \ + ttf-noto-emoji-regular \ + ttf-sazanami-gothic \ + ttf-sazanami-mincho \ + ttf-tlwg \ + ttf-roboto \ + ttf-wqy-zenhei \ + ttf-pt-sans \ + ttf-vlgothic \ + ttf-ubuntu-mono \ + ttf-ubuntu-sans \ + libyui-ncurses \ + libyui \ + x11vnc \ + terminus-font-consolefonts \ + terminus-font-pcf \ + xdotool \ + xkbevd \ + bdftopcf \ + iceauth \ + sessreg \ + xgamma \ + setxkbmap \ + xkbutils \ + twm \ + xclock \ + xfontsel \ + xkbprint \ + xsetmode \ + xlsatoms \ + xlsclients \ + xlsfonts \ + xmag \ + xmessage \ + xrdb \ + xrefresh \ + xsetroot \ + xstdcmap \ + xterm \ + xwd \ + xwud \ + xorg-sgml-doctools \ + xf86-input-tslib \ + xf86-input-void \ + xf86-video-armsoc \ + xf86-video-ati \ + font-adobe-100dpi \ + font-adobe-utopia-100dpi \ + font-bh-100dpi \ + font-bh-lucidatypewriter-100dpi \ + font-bitstream-100dpi \ + font-cursor-misc \ + font-misc-misc \ + xorg-fonts-100dpi \ + liblbxutil \ + libxaw6 \ + libxkbui \ + libxpresent \ + xcb-util-cursor \ + xserver-common \ + openjpeg \ + pangomm \ + spirv-shader-generator \ + spirv-tools \ + stalonetray \ + surf \ + tesseract-lang \ + tesseract \ + tigervnc \ + tslib \ + unclutter-xfixes \ + libvdpau \ + xcursorgen \ + xscreensaver \ + yad \ + parallel-deqp-runner \ + ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "opengl-es-cts", "", d)} \ + ${@bb.utils.contains("DISTRO_FEATURES", "opengl vulkan", "vulkan-cts", "", d)} \ +" +RDEPENDS_packagegroup-meta-oe-graphics_append_x86 = " renderdoc xf86-video-nouveau xf86-video-mga" +RDEPENDS_packagegroup-meta-oe-graphics_append_x86-64 = " renderdoc xf86-video-nouveau xf86-video-mga" +RDEPENDS_packagegroup-meta-oe-graphics_append_arm = " renderdoc" +RDEPENDS_packagegroup-meta-oe-graphics_append_aarch64 = " renderdoc" +RDEPENDS_packagegroup-meta-oe-graphics_remove_libc-musl = "renderdoc" RDEPENDS_packagegroup-meta-oe-kernel ="\ - agent-proxy broadcom-bt-firmware cpupower \ - crash ipmitool minicoredumper oprofile \ - " -RDEPENDS_packagegroup-meta-oe-kernel_append_x86 = " pm-graph " -RDEPENDS_packagegroup-meta-oe-kernel_append_x86-64 = " pm-graph " + agent-proxy \ + crash \ + cpupower \ + ipmitool \ + broadcom-bt-firmware \ + kernel-selftest \ + minicoredumper \ + oprofile \ + spidev-test \ +" +RDEPENDS_packagegroup-meta-oe-kernel_append_x86 = " intel-speed-select ipmiutil pm-graph turbostat" +RDEPENDS_packagegroup-meta-oe-kernel_append_x86-64 = " intel-speed-select ipmiutil kpatch pm-graph turbostat" +RDEPENDS_packagegroup-meta-oe-kernel_append_poerpc64 = " libpfm4" -RDEPENDS_packagegroup-meta-oe-kernel_remove_libc-musl = "crash minicoredumper" +# Kernel-selftest does not build with 5.8 and its exluded from build too so until its fixed remove it +RDEPENDS_packagegroup-meta-oe-kernel_remove = "kernel-selftest" +RDEPENDS_packagegroup-meta-oe-kernel_remove_libc-musl = "crash intel-speed-select kernel-selftest minicoredumper turbostat" +RDEPENDS_packagegroup-meta-oe-kernel_remove_mipsarch = "makedumpfile" RDEPENDS_packagegroup-meta-oe-kernel_remove_mips64 = "crash" RDEPENDS_packagegroup-meta-oe-kernel_remove_mips64el = "crash" -RDEPENDS_packagegroup-meta-oe-kernel_remove_riscv64 = "crash oprofile" -RDEPENDS_packagegroup-meta-oe-kernel_remove_riscv32 = "crash oprofile" +RDEPENDS_packagegroup-meta-oe-kernel_remove_riscv64 = "crash makedumpfile oprofile" +RDEPENDS_packagegroup-meta-oe-kernel_remove_riscv32 = "crash makedumpfile oprofile" RDEPENDS_packagegroup-meta-oe-multimedia ="\ - alsa-oss audiofile cdrkit id3lib \ - a2jmidid jack libass libburn libcdio libcdio-paranoia \ - libdvdread libmms libmodplug libopus live555 \ - opus-tools \ - sound-theme-freedesktop v4l-utils yavta wavpack libvpx \ - ${@bb.utils.contains("DISTRO_FEATURES", "x11", "xpext pavucontrol xsp", "", d)} \ + alsa-oss \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "faad2", "", d)} \ + cdrkit \ + id3lib \ + audiofile \ + a2jmidid \ + jack-server \ + jack-utils \ + libass \ + libburn \ + libcdio-paranoia \ + libcdio \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libmad", "", d)} \ + libmms \ + libdvdread \ + libopus \ + live555-examples \ + live555-mediaserver \ libmikmod \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libmad faad2 mpv", "", d)} \ - " + opus-tools \ + libmodplug \ + sound-theme-freedesktop \ + yavta \ + v4l-utils \ + wavpack \ + libvpx \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "xsp", "", d)} \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "mpv", "", d)} \ + pipewire \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "pavucontrol", "", d)} \ + libopusenc \ +" + RDEPENDS_packagegroup-meta-oe-multimedia_remove_libc-musl = "alsa-oss" RDEPENDS_packagegroup-meta-oe-navigation ="\ - geoclue geos libspatialite proj \ + geos \ + ${@bb.utils.contains("DISTRO_FEATURES", "bluz4", "gpsd-machine-conf gpsd", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "orrery", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "bluz4", "gpsd gpsd-machine-conf", "", d)} \ - " + geoclue \ + libspatialite \ + proj \ +" + +RDEPENDS_packagegroup-meta-oe-printing ="\ + cups-filters \ + qpdf \ +" RDEPENDS_packagegroup-meta-oe-security ="\ - tomoyo-tools \ + keyutils \ + nmap \ ${@bb.utils.contains("DISTRO_FEATURES", "pam", "passwdqc", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "bluz5", "nmap", "", d)} \ - " + softhsm \ + tomoyo-tools \ +" RDEPENDS_packagegroup-meta-oe-shells ="\ - dash tcsh zsh \ - " - -NE10 = "" -NE10_aarch64 = "ne10" -NE10_armv7a = "ne10" -NE10_armv7ve = "ne10" + dash \ + mksh \ + tcsh \ + zsh \ +" RDEPENDS_packagegroup-meta-oe-support ="\ - anthy asio atop augeas avro-c bdwgc frame grail c-ares \ - ccid ceres-solver ckermit cpprest ctapi-common daemonize \ - daemontools devmem2 dfu-util dfu-util-native digitemp \ - dstat eject enca epeg espeak fbset fbset-modes \ - fftw fltk-native gd gflags glog gnulib gperftools \ - gpm gradm gsl gsoap hddtemp hidapi htop hunspell hwdata iksemel \ - libinih inotify-tools joe lcms lcov libatasmart libbytesize \ - libcereal libcyusbserial libee libeigen libestr libftdi libgit2 \ - libgpiod libiio libjs-jquery libjs-sizzle liblinebreak libmicrohttpd \ - libmxml liboauth libol liboop libp11 libraw1394 libsmi libsoc libssh2 \ - libssh libtar libteam libtinyxml2 libtinyxml libusbg libusb-compat libutempter \ - links lockdev log4c log4cpp logwarn libdevmapper lvm2 \ - mailcap mbuffer mg minini \ - multipath-tools nano neon nmon numactl onig openct openldap \ - opensc wbxml2 p910nd pcsc-lite picocom libotr pidgin \ - pngcheck poco poppler poppler-data portaudio-v19 pps-tools \ - pv pxaregs raptor2 rdfind read-edid rsnapshot \ - satyr sdparm pty-forward-native serial-forward \ - sg3-utils sharutils spitools srecord ssiapi stm32flash \ - syslog-ng system-config-keyboard tbb thin-provisioning-tools tokyocabinet \ - tree uhubctl unixodbc uriparser usb-modeswitch \ - usb-modeswitch-data uthash utouch-evemu utouch-frame \ - vim vim-tiny websocketpp xdelta3 xdg-user-dirs xmlstarlet \ - zbar zile \ - ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geis toscoterm uim synergy utouch-mtview links-x11 fltk pidgin-otr", "", d)} \ + anthy \ + atop \ + ace-cloud-editor \ + frame \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geis", "", d)} \ + geis \ + grail \ + asio \ + augeas \ + avro-c \ + bdwgc \ + c-ares \ + cmark \ + ${@bb.utils.contains("DISTRO_FEATURES", "polkit gobject-introspection-data", "colord", "", d)} \ + consolation \ + cpprest \ + ctapi-common \ + dfu-util \ + dhex \ + digitemp \ + dstat \ + espeak \ + exiv2 \ + libnice \ + c-periphery \ + fmt \ + function2 \ + gd \ + gflags \ + glog \ + gperftools \ + gpm \ + gsoap \ + hdf5 \ + htop \ + hunspell-dictionaries \ + hunspell \ + hwdata \ + iksemel \ + gengetopt \ + imagemagick \ + iniparser \ + inotify-tools \ + joe \ + lcms \ + lcov \ + imapfilter \ + libbytesize \ + libcyusbserial \ + libestr \ + libfann \ + libftdi \ + ccid \ + zchunk \ + libgpiod \ + libgpiod \ + ckermit \ + libcereal \ + daemontools \ + libiio \ + devmem2 \ + libgit2 \ + libharu \ + eject \ + enca \ + epeg \ + libmxml \ + fbset-modes \ + fbset \ + liboop \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "fltk", "", d)} \ + freerdp \ + libgusb \ + emacs \ + libp11 \ + libraw1394 \ + gradm \ + gsl \ + librsync \ + hddtemp \ + hidapi \ + libsoc \ + libmimetic \ + libinih \ + libtar \ + libteam \ + libusb-compat \ + libatasmart \ libcanberra \ - ${@bb.utils.contains("DISTRO_FEATURES", "x11 pam", "xorgxrdp xrdp", "", d)} \ - procmail \ - ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "udisks2 upower", "", d)} \ - ${NE10} \ + libssh \ + libssh2 \ + libee \ + libusbgx-config \ + libusbgx \ + lockdev \ + logwarn \ + libjs-jquery \ + libjs-sizzle \ + liblinebreak \ + mailcap \ + liboauth \ + libol \ + mg \ + monit \ + mscgen \ + libsmi \ + remmina \ + neon \ + nmon \ + libtinyxml \ + libusbg \ + libutempter \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "links-x11", "links", d)} \ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "lio-utils", "", d)} \ - " - + log4c \ + log4cpp \ + nspr \ + libdevmapper \ + lvm2 \ + nss \ + mbuffer \ + onig \ + mime-support \ + minini \ + multipath-tools \ + numactl \ + clinfo \ + opencv \ + opensc \ + openct \ + openldap \ + wbxml2 \ + p910nd \ + libtinyxml2 \ + picocom \ + funyahoo-plusplus \ + icyque \ + libotr \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "pidgin-otr", "", d)} \ + pidgin \ + purple-skypeweb \ + pidgin-sipe \ + pngcheck \ + poco \ + poppler-data \ + poppler \ + portaudio-v19 \ + procmail \ + pxaregs \ + pv \ + rsnapshot \ + pps-tools \ + raptor2 \ + rdfind \ + sdparm \ + serial-forward \ + read-edid \ + spitools \ + libsass \ + sassc \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "synergy", "", d)} \ + syslog-ng \ + system-config-keyboard \ + tbb \ + satyr \ + pcsc-lite \ + sharutils \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "toscoterm", "", d)} \ + sg3-utils \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "uim", "", d)} \ + uchardet \ + srecord \ + ssiapi \ + tree \ + utouch-evemu \ + utouch-frame \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11", "utouch-mtview", "", d)} \ + ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "udisks2", "", d)} \ + stm32flash \ + tokyocabinet \ + xmlstarlet \ + thin-provisioning-tools \ + uhubctl \ + zile \ + unixodbc \ + daemonize \ + upower \ + xxhash \ + unicode-ucd \ + xdelta3 \ + uriparser \ + nano \ + xdg-user-dirs \ + xmlsec1 \ + ${@bb.utils.contains("DISTRO_FEATURES", "x11 pam", "xorgxrdp xrdp", "", d)} \ + usb-modeswitch-data \ + usb-modeswitch \ + liburing \ + zbar \ + libmicrohttpd \ +" +RDEPENDS_packagegroup-meta-oe-support_append_armv7a = " ne10" +RDEPENDS_packagegroup-meta-oe-support_append_armv7ve = " ne10" +RDEPENDS_packagegroup-meta-oe-support_append_aarch64 = " ne10" +RDEPENDS_packagegroup-meta-oe-support_append_x86 = " mcelog mce-inject mce-test open-vm-tools vboxguestdrivers" +RDEPENDS_packagegroup-meta-oe-support_append_x86-64 = " mcelog mce-inject mce-test open-vm-tools vboxguestdrivers" RDEPENDS_packagegroup-meta-oe-support_remove_arm ="numactl" RDEPENDS_packagegroup-meta-oe-support_remove_mipsarch = "gperftools" RDEPENDS_packagegroup-meta-oe-support_remove_riscv64 = "gperftools uim" RDEPENDS_packagegroup-meta-oe-support_remove_riscv32 = "gperftools uim" RDEPENDS_packagegroup-meta-oe-support_remove_powerpc = "ssiapi" -RDEPENDS_packagegroup-meta-oe-support-egl ="\ - freerdp libnice opencv \ - " - RDEPENDS_packagegroup-meta-oe-test ="\ - catch2 cppunit cunit cxxtest evtest fb-test \ - fwts googletest pm-qa stress-ng testfloat \ - " + bats \ + cppunit \ + cukinia \ + cunit \ + cxxtest \ + evtest \ + fb-test \ + fwts \ + googletest \ + pm-qa \ + testfloat \ +" RDEPENDS_packagegroup-meta-oe-test_remove_libc-musl = "pm-qa" RDEPENDS_packagegroup-meta-oe-test_remove_arm = "fwts" RDEPENDS_packagegroup-meta-oe-test_remove_mipsarch = "fwts" @@ -306,14 +916,29 @@ RDEPENDS_packagegroup-meta-oe-ptest-packages = "\ uthash-ptest \ libee-ptest \ poco-ptest \ - " +" +RDEPENDS_packagegroup-meta-oe-ptest-packages_append_x86 = " mcelog-ptest" +RDEPENDS_packagegroup-meta-oe-ptest-packages_append_x86-64 = " mcelog-ptest" + RDEPENDS_packagegroup-meta-oe-ptest-packages_remove_riscv64 = "oprofile-ptest" RDEPENDS_packagegroup-meta-oe-ptest-packages_remove_riscv32 = "oprofile-ptest" +RDEPENDS_packagegroup-meta-oe-ptest-packages_remove_arm = "numactl-ptest" -RDEPENDS_packagegroup-meta-oe-ptest-packages_append_x86 = "\ - mcelog-ptest \ -" -RDEPENDS_packagegroup-meta-oe-ptest-packages_append_x86-64 = "\ - mcelog-ptest \ + +RDEPENDS_packagegroup-meta-oe-fortran-packages = "\ + lapack \ + octave \ " -RDEPENDS_packagegroup-meta-oe-ptest-packages_remove_arm = "numactl-ptest" +# library-only or headers-only packages +# They wont be built as part of images but might be interesting to include +# with dev-pkgs images +# +# opencl-headers sdbus-c++-libsystemd boost-url nlohmann-fifo sqlite-orm +# nlohmann-json exprtk liblightmodbus p8platform gnome-doc-utils-stub +# glm ttf-mplus xbitmaps ceres-solver cli11 fftw gnulib libeigen ade +# spdlog span-lite uthash websocketpp catch2 properties-cpp + +# rsyslog conflicts with syslog-ng so its not included here + +EXCLUDE_FROM_WORLD = "1" + diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.1/run-ptest b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.3/run-ptest index f6ade0c7e..f6ade0c7e 100755 --- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.1/run-ptest +++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.3/run-ptest diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.1.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.3.bb index 9eaec0f2a..3b87c2265 100644 --- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.1.bb +++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.3.bb @@ -8,7 +8,7 @@ inherit cmake DEPENDS += "expat" -SRCREV = "3a4f343fb924650e7639660efa5f143961162044" +SRCREV = "6e8e5aadb674cccea5bdd55141db5dad887fbacd" 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.8.1.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb index 82860a82f..98829765c 100644 --- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.1.bb +++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb @@ -16,7 +16,7 @@ PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${B DEPENDS += "expat" -SRCREV = "3a4f343fb924650e7639660efa5f143961162044" +SRCREV = "6e8e5aadb674cccea5bdd55141db5dad887fbacd" SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master" SRC_URI += "file://run-ptest" diff --git a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.3.bb b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.3.bb index 5d453219f..1513255c4 100644 --- a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.3.bb +++ b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.3.bb @@ -29,6 +29,11 @@ CFLAGS += "${TOOLCHAIN_OPTIONS} ${TUNE_CCARGS}" COMPILER_toolchain-clang = "clang" COMPILER ?= "gcc" +PACKAGECONFIG ??= "no-iconv no-getconf" + +PACKAGECONFIG[no-iconv] = ",," +PACKAGECONFIG[no-getconf] = ",," + EXTRA_OEMAKE = 'CROSS_COMPILE="${HOST_PREFIX}" \ CC="${COMPILER}" \ STRIP="strip" \ @@ -56,7 +61,7 @@ do_configure() { sed -e 's/CONFIG_SWAPON=y/# CONFIG_SWAPON is not set/' -i .config # Enable init if toybox was set as init manager - if [[ ${VIRTUAL-RUNTIME_init_manager} == *"toybox"* ]]; then + if ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','toybox','true','false',d)}; then sed -e 's/# CONFIG_INIT is not set/CONFIG_INIT=y/' -i .config fi } @@ -67,6 +72,12 @@ do_compile() { # Create a list of links needed ${BUILD_CC} -I . scripts/install.c -o generated/instlist ./generated/instlist long | sed -e 's#^#/#' > toybox.links + if ${@bb.utils.contains('PACKAGECONFIG','no-iconv','true','false',d)}; then + sed -i -e '/iconv$/d' toybox.links + fi + if ${@bb.utils.contains('PACKAGECONFIG','no-getconf','true','false',d)}; then + sed -i -e '/getconf$/d' toybox.links + fi } do_install() { diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.3.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.4.bb index 93eba93a9..b9a6b7179 100644 --- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.3.bb +++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.4.bb @@ -21,8 +21,8 @@ RDEPENDS_${PN} = " \ " SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz" -SRC_URI[md5sum] = "6c0ce8be21a7687b89354c77757d0c5b" -SRC_URI[sha256sum] = "3bca4ffe39e2f94cef50f6ea65acb873a6dbce5db34fc6bcefe38b6d095e82df" +SRC_URI[md5sum] = "911272e73181fdc850bb4d25103a9f83" +SRC_URI[sha256sum] = "9d16eebb96b53b514778e813019b8dd15fea9fec5aafde9fae5febf59df83773" inherit autotools gettext pkgconfig diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc index 1aa1f68cd..46a64006d 100644 --- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc +++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc @@ -31,7 +31,8 @@ BINCONFIG_GLOB = "mysql_config" inherit cmake gettext binconfig update-rc.d useradd systemd multilib_script -MULTILIB_SCRIPTS = "${PN}-server:${bindir}/mysql_install_db ${PN}-server:${bindir}/mysqld_safe" +MULTILIB_SCRIPTS = "${PN}-server:${bindir}/mariadbd-safe \ + ${PN}-server:${bindir}/mariadb-install-db" INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb" INITSCRIPT_NAME_${PN}-server = "mysqld" @@ -243,69 +244,78 @@ FILES_libmysqld-dev = "\ FILES_${PN}-client = "\ ${bindir}/myisam_ftdump \ ${bindir}/mysql \ + ${bindir}/mariadb \ ${bindir}/mysql_client_test \ + ${bindir}/mariadb-client-test \ ${bindir}/mysql_client_test_embedded \ + ${bindir}/mariadb-client-test-embedded \ ${bindir}/mysql_find_rows \ + ${bindir}/mariadb-find-rows \ ${bindir}/mysql_fix_extensions \ + ${bindir}/mariadb-fix-extensions \ ${bindir}/mysql_waitpid \ + ${bindir}/mariadb-waitpid \ ${bindir}/mysqlaccess \ + ${bindir}/mariadb-access \ ${bindir}/mysqladmin \ - ${bindir}/mysqlbug \ + ${bindir}/mariadb-admin \ ${bindir}/mysqlcheck \ + ${bindir}/mariadb-check \ ${bindir}/mysqldump \ + ${bindir}/mariadb-dump \ ${bindir}/mysqldumpslow \ + ${bindir}/mariadb-dumpslow \ ${bindir}/mysqlimport \ + ${bindir}/mariadb-import \ ${bindir}/mysqlshow \ + ${bindir}/mariadb-show \ ${bindir}/mysqlslap \ + ${bindir}/mariadb-slap \ ${bindir}/mysqltest_embedded \ + ${bindir}/mariadb-test-embedded \ ${libexecdir}/mysqlmanager \ ${sysconfdir}/my.cnf.d/mysql-clients.cnf" FILES_${PN}-server = "\ - ${bindir}/comp_err \ - ${bindir}/isamchk \ - ${bindir}/isamlog \ ${bindir}/msql2mysql \ ${bindir}/my_print_defaults \ ${bindir}/myisamchk \ ${bindir}/myisamlog \ ${bindir}/myisampack \ ${bindir}/mysql_convert_table_format \ - ${bindir}/mysql_fix_privilege_tables \ + ${bindir}/mariadb-convert-table-format \ ${bindir}/mysql_install_db \ + ${bindir}/mariadb-install-db \ ${bindir}/mysql_secure_installation \ + ${bindir}/mariadb-secure-installation \ ${bindir}/mysql_setpermission \ + ${bindir}/mariadb-setpermission \ ${bindir}/mysql-systemd-start \ ${bindir}/mysql_tzinfo_to_sql \ + ${bindir}/mariadb-tzinfo-to-sql \ ${bindir}/mysql_upgrade \ + ${bindir}/mariadb-upgrade \ ${bindir}/mysql_plugin \ - ${bindir}/mysql_zap \ + ${bindir}/mariadb-plugin \ ${bindir}/mysqlbinlog \ + ${bindir}/mariadb-binlog \ ${bindir}/mysqld_multi \ + ${bindir}/mariadbd-multi \ + ${bindir}/mariadbd-safe \ ${bindir}/mysqld_safe \ ${bindir}/mysqld_safe_helper \ + ${bindir}/mariadbd-safe-helper \ ${bindir}/mysqlhotcopy \ + ${bindir}/mariadb-hotcopy \ ${bindir}/mysqltest \ - ${bindir}/ndb_delete_all \ - ${bindir}/ndb_desc \ - ${bindir}/ndb_drop_index \ - ${bindir}/ndb_drop_table \ - ${bindir}/ndb_mgm \ - ${bindir}/ndb_restore \ - ${bindir}/ndb_select_all \ - ${bindir}/ndb_select_count \ - ${bindir}/ndb_show_tables \ - ${bindir}/ndb_waiter \ - ${bindir}/pack_isam \ + ${bindir}/mariadb-test \ ${bindir}/perror \ ${bindir}/replace \ ${bindir}/resolve_stack_dump \ ${bindir}/resolveip \ ${libexecdir}/mysqld \ ${sbindir}/mysqld \ - ${sbindir}/ndb_cpcd \ - ${sbindir}/ndbd \ - ${sbindir}/ndb_mgmd \ + ${sbindir}/mariadbd \ ${libdir}/plugin/*.so \ ${libdir}/security/*.so \ ${libdir}/plugin/auth_pam_tool_dir/auth_pam_tool \ diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc index 54ccf1fe7..090e16f58 100644 --- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc +++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc @@ -247,10 +247,8 @@ FILES_${PN} += "${sysconfdir}/init.d/${BPN}-server \ FILES_${PN}-client = "${bindir}/clusterdb \ ${bindir}/createdb \ - ${bindir}/createlang \ ${bindir}/createuser \ ${bindir}/dropdb \ - ${bindir}/droplang \ ${bindir}/dropuser \ ${bindir}/pg_dump \ ${bindir}/pg_dumpall \ @@ -332,7 +330,7 @@ FILES_${PN}-contrib = " ${bindir}/oid2name ${bindir}/pg_standby \ ${libdir}/${BPN}/sslinfo.so \ ${libdir}/${BPN}/tablefunc.so \ ${libdir}/${BPN}/test_parser.so ${libdir}/${BPN}/timetravel.so \ - ${libdir}/${BPN}/tsearch2.so ${libdir}/${BPN}/uuid-ossp.so \ + ${libdir}/${BPN}/uuid-ossp.so \ ${libdir}/${BPN}/pgxml.so ${libdir}/${BPN}/passwordcheck.so \ ${libdir}/${BPN}/pg_upgrade_support.so ${libdir}/${BPN}/.so \ ${libdir}/${BPN}/unaccent.so \ diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.3.bb b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.4.bb index cc7e3ff52..6ea9acc00 100644 --- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.3.bb +++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.4.bb @@ -8,5 +8,4 @@ SRC_URI += "\ file://0001-Improve-reproducibility.patch \ " -SRC_URI[md5sum] = "a30c023dd7088e44d73be71af2ef404a" -SRC_URI[sha256sum] = "94ed64a6179048190695c86ec707cc25d016056ce10fc9d229267d9a8f1dcf41" +SRC_URI[sha256sum] = "bee93fbe2c32f59419cb162bcc0145c58da9a8644ee154a30b9a5ce47de606cc" diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch index 8524517cb..87771cba8 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch @@ -29,24 +29,21 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> --- a/src/procattr.c +++ b/src/procattr.c -@@ -8,7 +8,19 @@ +@@ -8,12 +8,16 @@ #include "selinux_internal.h" #include "policy.h" -#ifndef __BIONIC__ +/* Bionic and glibc >= 2.30 declare gettid() system call wrapper in unistd.h and + * has a definition for it */ -+#ifdef __BIONIC__ -+ #define OVERRIDE_GETTID 0 -+#elif !defined(__GLIBC_PREREQ) -+ #define OVERRIDE_GETTID 1 -+#elif !__GLIBC_PREREQ(2,29) -+ #define OVERRIDE_GETTID 1 -+#else -+ #define OVERRIDE_GETTID 0 -+#endif -+ -+#if OVERRIDE_GETTID ++#if defined(__GLIBC_) ++#if !__GLIBC_PREREQ(2,30) static pid_t gettid(void) { return syscall(__NR_gettid); + } + #endif ++#endif + + static int getprocattrcon(char ** context, + pid_t pid, const char *attr) diff --git a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch index a9650c232..53f88885f 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch +++ b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch @@ -1,5 +1,10 @@ -It fails to compile doxygen-native when /usr/bin/python is a link to python3 on -build host: +From aa833cf56c5cc2e87a1d91881eb2286beb34e417 Mon Sep 17 00:00:00 2001 +From: Leon Anavi <leon.anavi@konsulko.com> +Date: Wed, 26 Aug 2020 10:52:10 +0300 +Subject: [PATCH] doxygen: Fix Python issues for doxygen-native + +It fails to compile doxygen-native when /usr/bin/python is a link +to python3 on build host: | Failed to import the site module | Traceback (most recent call last): @@ -21,21 +26,31 @@ build host: | _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) | ModuleNotFoundError: No module named '_sysconfigdata' -Replace find_package PythonInterp with Python3 to fix this issue that -it uses python3 from python3-native. And it also replaces the result -variable PYTHON_EXECUTABLE with Python3_EXECUTABLE. +Replace find_package PythonInterp with Python3 to fix this issue +that it uses python3 from python3-native. And it also replaces the +result variable PYTHON_EXECUTABLE with Python3_EXECUTABLE. This patch is only needded by doxygen-native. Upstream-Status: Inappropriate[oe specific] -Signed-off-by: Kai Kang <kai.kang@windriver.com> +Co-Authored-By: Kai Kang <kai.kang@windriver.com> +Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> --- + CMakeLists.txt | 2 +- + addon/doxywizard/CMakeLists.txt | 6 +++--- + doc/CMakeLists.txt | 6 +++--- + examples/CMakeLists.txt | 4 ++-- + libmscgen/CMakeLists.txt | 2 +- + src/CMakeLists.txt | 12 ++++++------ + testing/CMakeLists.txt | 4 ++-- + 7 files changed, 18 insertions(+), 18 deletions(-) + diff --git a/CMakeLists.txt b/CMakeLists.txt -index 969ae58..604400f 100644 +index 35e6a0c2..9aaebbdf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -93,7 +93,7 @@ else () +@@ -100,7 +100,7 @@ else () endif () find_program(DOT NAMES dot) @@ -45,7 +60,7 @@ index 969ae58..604400f 100644 find_package(BISON REQUIRED) if (BISON_VERSION VERSION_LESS 2.7) diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt -index 6aacd8b..fa197e9 100644 +index 6aacd8b6..fa197e9e 100644 --- a/addon/doxywizard/CMakeLists.txt +++ b/addon/doxywizard/CMakeLists.txt @@ -58,7 +58,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/settings.h PROPERTIES GENERA @@ -76,7 +91,7 @@ index 6aacd8b..fa197e9 100644 OUTPUT ${GENERATED_SRC_WIZARD}/${lex_file}.l.h ) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt -index 032c16a..332f1b2 100644 +index a094c570..8a757c20 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -132,7 +132,7 @@ configure_file(${CMAKE_SOURCE_DIR}/doc/doxyindexer.1 ${PROJECT_BINARY_DIR}/ @@ -85,7 +100,7 @@ index 032c16a..332f1b2 100644 add_custom_command( - COMMAND ${PYTHON_EXECUTABLE} translator.py ${CMAKE_SOURCE_DIR} + COMMAND ${Python3_EXECUTABLE} translator.py ${CMAKE_SOURCE_DIR} - DEPENDS ${PROJECT_BINARY_DIR}/doc/maintainers.txt ${PROJECT_BINARY_DIR}/doc/language.tpl ${PROJECT_BINARY_DIR}/doc/translator.py + DEPENDS ${CMAKE_SOURCE_DIR}/doc/maintainers.txt ${CMAKE_SOURCE_DIR}/doc/language.tpl ${PROJECT_BINARY_DIR}/doc/translator.py ${LANG_FILES} OUTPUT language.doc WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc @@ -141,7 +141,7 @@ set_source_files_properties(language.doc PROPERTIES GENERATED 1) @@ -107,235 +122,19 @@ index 032c16a..332f1b2 100644 COMMAND ${CMAKE_COMMAND} -E rename ${PROJECT_BINARY_DIR}/chm/index.chm ${PROJECT_BINARY_DIR}/chm/doxygen_manual.chm DEPENDS ${PROJECT_BINARY_DIR}/doc/language.doc ${PROJECT_BINARY_DIR}/doc/config.doc diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt -index 967f3d4..a8d1aad 100644 +index 3f1c79b8..d5866ee1 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt -@@ -52,196 +52,196 @@ add_custom_target(examples - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen class.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex - DEPENDS doxygen class.h class.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/class/html/index.html ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen define.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex - DEPENDS doxygen define.h define.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/define/html/index.html ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen enum.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex - DEPENDS doxygen enum.h enum.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/enum/html/index.html ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen file.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex - DEPENDS doxygen file.h file.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/file/html/index.html ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen func.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex - DEPENDS doxygen func.h func.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/func/html/index.html ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen javadoc-banner.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman_doc.tex - DEPENDS doxygen javadoc-banner.h javadoc-banner.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/html/index.html ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen page.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex - DEPENDS doxygen page.doc page.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/page/html/index.html ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen relates.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex - DEPENDS doxygen relates.cpp relates.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/relates/html/index.html ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen author.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex - DEPENDS doxygen author.cpp author.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/author/html/index.html ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen par.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex - DEPENDS doxygen par.cpp par.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/par/html/index.html ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen overload.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex - DEPENDS doxygen overload.cpp overload.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/overload/html/index.html ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen example.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex - DEPENDS doxygen example.cpp example_test.cpp example.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen include.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex - DEPENDS doxygen include.cpp include_test.cpp include.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/include/html/index.html ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen qtstyle.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex - DEPENDS doxygen qtstyle.cpp qtstyle.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/qtstyle/html/index.html ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen jdstyle.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex - DEPENDS doxygen jdstyle.cpp jdstyle.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/jdstyle/html/index.html ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen structcmd.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex - DEPENDS doxygen structcmd.h structcmd.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/structcmd/html/index.html ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen autolink.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex - DEPENDS doxygen autolink.cpp autolink.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/autolink/html/index.html ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen tag.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman_doc.tex - DEPENDS doxygen tag.cpp tag.cfg ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/tag/html/index.html ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen restypedef.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex - DEPENDS doxygen restypedef.cpp restypedef.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/restypedef/html/index.html ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen afterdoc.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex - DEPENDS doxygen afterdoc.h afterdoc.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/afterdoc/html/index.html ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen templ.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman_doc.tex - DEPENDS doxygen templ.cpp templ.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/template/html/index.html ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen group.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex - DEPENDS doxygen group.cpp group.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/group/html/index.html ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen memgrp.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex - DEPENDS doxygen memgrp.cpp memgrp.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/memgrp/html/index.html ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen pyexample.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex - DEPENDS doxygen pyexample.py pyexample.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/pyexample/html/index.html ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen tclexample.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex - DEPENDS doxygen tclexample.tcl tclexample.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/tclexample/html/index.html ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen mux.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex - DEPENDS doxygen mux.vhdl mux.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/mux/html/index.html ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen manual.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex - DEPENDS doxygen manual.c manual.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/manual/html/index.html ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex - ) - - add_custom_command( - COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen docstring.cfg -- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex -+ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex - DEPENDS doxygen docstring.py docstring.cfg ${TOP}/examples/strip_example.py - OUTPUT ${PROJECT_BINARY_DIR}/html/examples/docstring/html/index.html ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex - ) -@@ -249,7 +249,7 @@ add_custom_command( +@@ -51,7 +51,7 @@ foreach (f_inp ${BASIC_EXAMPLES}) + string(REGEX REPLACE ":.*" "" f ${f_inp}) + add_custom_command( + COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen ${f}.cfg +- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/${f}/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/${f}/latex/refman_doc.tex ++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/${f}/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/${f}/latex/refman_doc.tex + DEPENDS doxygen ${f}.${f_ext} ${f}.cfg ${TOP}/examples/strip_example.py + OUTPUT ${PROJECT_BINARY_DIR}/html/examples/${f}/html/index.html ${PROJECT_BINARY_DIR}/html/examples/${f}/latex/refman_doc.tex + ) +@@ -68,7 +68,7 @@ add_custom_target(examples if (DOT) add_custom_command( COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen diagrams.cfg @@ -345,7 +144,7 @@ index 967f3d4..a8d1aad 100644 OUTPUT ${PROJECT_BINARY_DIR}/html/examples/diagrams/html/index.html ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex ) diff --git a/libmscgen/CMakeLists.txt b/libmscgen/CMakeLists.txt -index 079fcfc..e6d86f6 100644 +index 079fcfc8..e6d86f61 100644 --- a/libmscgen/CMakeLists.txt +++ b/libmscgen/CMakeLists.txt @@ -7,7 +7,7 @@ include_directories( @@ -358,76 +157,84 @@ index 079fcfc..e6d86f6 100644 OUTPUT ${GENERATED_SRC}/${lex_file}.l.h ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 23460d0..58f679a 100644 +index cb289116..356741ff 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt -@@ -35,7 +35,7 @@ set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1) +@@ -39,7 +39,7 @@ set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1) # configvalues.h add_custom_command( -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h - DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maph ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.h ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maph ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.h + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/config.xml ${CMAKE_CURRENT_LIST_DIR}/configgen.py OUTPUT ${GENERATED_SRC}/configvalues.h ) -@@ -47,7 +47,7 @@ add_custom_target( +@@ -51,7 +51,7 @@ add_custom_target( # configvalues.cpp add_custom_command( -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp - DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maps ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.cpp ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maps ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.cpp + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/config.xml ${CMAKE_CURRENT_LIST_DIR}/configgen.py OUTPUT ${GENERATED_SRC}/configvalues.cpp ) -@@ -55,7 +55,7 @@ set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERAT +@@ -59,7 +59,7 @@ set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERAT # configoptions.cpp add_custom_command( -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp - DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -cpp ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configoptions.cpp ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -cpp ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configoptions.cpp + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/config.xml ${CMAKE_CURRENT_LIST_DIR}/configgen.py OUTPUT ${GENERATED_SRC}/configoptions.cpp ) -@@ -86,7 +86,7 @@ file(GLOB RESOURCES ${CMAKE_SOURCE_DIR}/templates/*/*) +@@ -94,7 +94,7 @@ endif() # resources.cpp add_custom_command( COMMENT "Generating ${GENERATED_SRC}/resources.cpp" -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp - DEPENDS ${RESOURCES} +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp + DEPENDS ${RESOURCES} ${CMAKE_CURRENT_LIST_DIR}/res2cc_cmd.py OUTPUT ${GENERATED_SRC}/resources.cpp ) -@@ -94,7 +94,7 @@ set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED +@@ -102,7 +102,7 @@ set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED # layout_default.xml add_custom_command( -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h - DEPENDS ${CMAKE_SOURCE_DIR}/src/layout_default.xml +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/to_c_cmd.py < ${CMAKE_CURRENT_LIST_DIR}/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/to_c_cmd.py < ${CMAKE_CURRENT_LIST_DIR}/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/layout_default.xml ${CMAKE_CURRENT_LIST_DIR}/to_c_cmd.py OUTPUT ${GENERATED_SRC}/layout_default.xml.h ) -@@ -124,7 +124,7 @@ foreach(lex_file ${LEX_FILES}) +@@ -131,7 +131,7 @@ foreach(lex_file ${LEX_FILES}) set(LEX_FILES_H ${LEX_FILES_H} " " ${GENERATED_SRC}/${lex_file}.l.h CACHE INTERNAL "Stores generated files") set(LEX_FILES_CPP ${LEX_FILES_CPP} " " ${GENERATED_SRC}/${lex_file}.cpp CACHE INTERNAL "Stores generated files") add_custom_command( -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/src/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/src/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h - DEPENDS ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/src/${lex_file}.l +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/scan_states.py ${CMAKE_CURRENT_LIST_DIR}/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/scan_states.py ${CMAKE_CURRENT_LIST_DIR}/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/scan_states.py ${CMAKE_CURRENT_LIST_DIR}/${lex_file}.l OUTPUT ${GENERATED_SRC}/${lex_file}.l.h ) diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt -index 40cb40b..a301acd 100644 +index b354e78f..28d45e11 100644 --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt -@@ -1,9 +1,9 @@ +@@ -1,7 +1,7 @@ + # run all tests sequentially (keep for backward compatibility) add_custom_target(tests - COMMENT "Running doxygen tests..." -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing - DEPENDS doxygen - ) - add_test(NAME suite -- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen $<TARGET_FILE:doxygen> --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing -+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen $<TARGET_FILE:doxygen> --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing - ) - + COMMENT "Running doxygen tests..." +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing + DEPENDS doxygen + ) + +@@ -19,6 +19,6 @@ foreach(TEST_FILE ${TEST_FILES}) + string(REGEX REPLACE "^.*/([0-9][0-9][0-9]*).*$" "\\1" TEST_ID "${TEST_FILE}") + # add a test target for each test + add_test(NAME ${TEST_NAME} +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --id ${TEST_ID} --doxygen $<TARGET_FILE:doxygen> --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing ++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --id ${TEST_ID} --doxygen $<TARGET_FILE:doxygen> --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing + ) + endforeach() +-- +2.17.1 + diff --git a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.20.bb index 45de71826..d4ac3b720 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.20.bb @@ -10,8 +10,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.src.tar.gz \ file://0001-build-don-t-look-for-Iconv.patch \ " SRC_URI_append_class-native = " file://doxygen-native-only-check-python3.patch" -SRC_URI[md5sum] = "7997a15c73a8bd6d003eaba5c2ee2b47" -SRC_URI[sha256sum] = "2cba988af2d495541cbbe5541b3bee0ee11144dcb23a81eada19f5501fd8b599" +SRC_URI[md5sum] = "8729936a843232a66fe970ef65f3c3e4" +SRC_URI[sha256sum] = "e0db6979286fd7ccd3a99af9f97397f2bae50532e4ecb312aa18862f8401ddec" inherit cmake python3native 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 8282091b3..039999f6b 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 @@ -16,3 +16,5 @@ SRC_URI[sha256sum] = "9184dd3dd40b7b84fca70083284bb9dbf2ee8022bf2be066bdc36592d9 FILES_${PN} += "${datadir}/icons" EXTRA_OECONF = "--disable-html-docs" + +RRECOMMENDS_${PN} += "source-code-pro-fonts" diff --git a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb deleted file mode 100644 index 967ac7623..000000000 --- a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "log4cplus provides a simple C++ logging API for log management" -SECTION = "libs" -HOMEPAGE = "http://sourceforge.net/projects/log4cplus/" -BUGTRACKER = "http://sourceforge.net/p/log4cplus/bugs/" - -LICENSE = "Apache-2.0 & BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=41e8e060c26822886b592ab4765c756b" - -SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz \ - " -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+)+)/" - -inherit autotools pkgconfig - -BBCLASSEXTEND = "native" diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Fix-musl-build.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Fix-musl-build.patch new file mode 100644 index 000000000..fa90aa121 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Fix-musl-build.patch @@ -0,0 +1,125 @@ +From a5a4bb4254b2109bd3e272174946f0bb36ee99a8 Mon Sep 17 00:00:00 2001 +From: Leon Anavi <leon.anavi@konsulko.com> +Date: Tue, 25 Aug 2020 11:45:45 +0300 +Subject: [PATCH] Fix musl build + +Apply the following fixes for musl: + +- Fix basename() is in libgen.h +- Fix wrong usage of LONG_BIT + +Same fixes have been submitted to the upstream of lshw by Sergio +Prado but they have not been merged yet. + +Upstream-Status: Submitted + +Co-Authored-By: Sergio Prado <sergio.prado@e-labworks.com> +Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> +--- + src/core/abi.cc | 4 +--- + src/core/sysfs.cc | 19 ++++++++++--------- + 2 files changed, 11 insertions(+), 12 deletions(-) + +diff --git a/src/core/abi.cc b/src/core/abi.cc +index adff7b5..76c664c 100644 +--- a/src/core/abi.cc ++++ b/src/core/abi.cc +@@ -20,9 +20,7 @@ __ID("@(#) $Id: mem.cc 1352 2006-05-27 23:54:13Z ezix $"); + bool scan_abi(hwNode & system) + { + // are we compiled as 32- or 64-bit process ? +- long sc = sysconf(LONG_BIT); +- if(sc==-1) sc = sysconf(_SC_LONG_BIT); +- if(sc!=-1) system.setWidth(sc); ++ system.setWidth(LONG_BIT); + + pushd(PROC_SYS); + +diff --git a/src/core/sysfs.cc b/src/core/sysfs.cc +index 32d6564..c2fa84f 100644 +--- a/src/core/sysfs.cc ++++ b/src/core/sysfs.cc +@@ -16,6 +16,7 @@ + #include <sys/stat.h> + #include <sys/types.h> + #include <sys/mount.h> ++#include <libgen.h> + + + __ID("@(#) $Id$"); +@@ -100,7 +101,7 @@ static string sysfs_getbustype(const string & path) + { + devname = + string(fs.path + "/bus/") + string(namelist[i]->d_name) + +- "/devices/" + basename(path.c_str()); ++ "/devices/" + basename(const_cast<char*>(path.c_str())); + + if (samefile(devname, path)) + return string(namelist[i]->d_name); +@@ -140,7 +141,7 @@ static string sysfstobusinfo(const string & path) + + if (bustype == "usb") + { +- string name = basename(path.c_str()); ++ string name = basename(const_cast<char*>(path.c_str())); + if (matches(name, "^[0-9]+-[0-9]+(\\.[0-9]+)*:[0-9]+\\.[0-9]+$")) + { + size_t colon = name.rfind(":"); +@@ -151,7 +152,7 @@ static string sysfstobusinfo(const string & path) + + if (bustype == "virtio") + { +- string name = basename(path.c_str()); ++ string name = basename(const_cast<char*>(path.c_str())); + if (name.compare(0, 6, "virtio") == 0) + return "virtio@" + name.substr(6); + else +@@ -159,10 +160,10 @@ static string sysfstobusinfo(const string & path) + } + + if (bustype == "vio") +- return string("vio@") + basename(path.c_str()); ++ return string("vio@") + basename(const_cast<char*>(path.c_str())); + + if (bustype == "ccw") +- return string("ccw@") + basename(path.c_str()); ++ return string("ccw@") + basename(const_cast<char*>(path.c_str())); + + if (bustype == "ccwgroup") + { +@@ -240,7 +241,7 @@ string entry::driver() const + string driverlink = This->devpath + "/driver"; + if (!exists(driverlink)) + return ""; +- return basename(readlink(driverlink).c_str()); ++ return basename(const_cast<char*>(readlink(driverlink).c_str())); + } + + +@@ -328,7 +329,7 @@ string entry::name_in_class(const string & classname) const + + string entry::name() const + { +- return basename(This->devpath.c_str()); ++ return basename(const_cast<char*>(This->devpath.c_str())); + } + + +@@ -340,12 +341,12 @@ entry entry::parent() const + + string entry::classname() const + { +- return basename(dirname(This->devpath).c_str()); ++ return basename(const_cast<char*>(dirname(This->devpath).c_str())); + } + + bool entry::isvirtual() const + { +- return string(basename(dirname(dirname(This->devpath)).c_str())) == "virtual"; ++ return string(basename(const_cast<char*>(dirname(dirname(This->devpath)).c_str()))) == "virtual"; + } + + string entry::string_attr(const string & name, const string & def) const +-- +2.17.1 + diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Makefile-Fix-cross-compilation.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Makefile-Fix-cross-compilation.patch deleted file mode 100644 index 6db6ab95e..000000000 --- a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Makefile-Fix-cross-compilation.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 62f9ed95b5d0feab426bff452be793c62a6b795a Mon Sep 17 00:00:00 2001 -From: Krzysztof Kozlowski <krzk@kernel.org> -Date: Wed, 6 Jun 2018 12:49:21 +0200 -Subject: [PATCH 1/2] Makefile: Fix cross compilation - -Allow building on ARMv7 and ARMv8. - -Upstream-Status: Submitted -Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> ---- - src/Makefile | 2 +- - src/core/Makefile | 2 +- - src/gui/Makefile | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index b50586bc9234..654b786dd899 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -18,7 +18,7 @@ export MANDIR - export DATADIR - export SQLITE - --CXX?=c++ -+CXX?=$(CROSS_COMPILE)c++ - INCLUDES=-I./core/ - DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\" - CXXFLAGS=-g -Wall -g $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS) -diff --git a/src/core/Makefile b/src/core/Makefile -index 5bf5a69cc6a6..2bd1b94c4175 100644 ---- a/src/core/Makefile -+++ b/src/core/Makefile -@@ -1,6 +1,6 @@ - PACKAGENAME?=lshw - --CXX=c++ -+CXX?=$(CROSS_COMPILE)c++ - INCLUDES= - DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\" - CXXFLAGS?=-g -Wall $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS) -diff --git a/src/gui/Makefile b/src/gui/Makefile -index 332ce5704819..b0f925490356 100644 ---- a/src/gui/Makefile -+++ b/src/gui/Makefile -@@ -1,7 +1,7 @@ - PACKAGENAME?=lshw - --CXX?=c++ --CC?=cc -+CXX?=$(CROSS_COMPILE)c++ -+CC?=$(CROSS_COMPILE)cc - STRIP?=strip - OBJCOPY?=objcopy - --- -2.7.4 - diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch deleted file mode 100644 index d3da01b40..000000000 --- a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 75667f8a0ae4f1689ff03eb1768b1ee8cdfbf00d Mon Sep 17 00:00:00 2001 -From: Krzysztof Kozlowski <krzk@kernel.org> -Date: Wed, 6 Jun 2018 12:49:30 +0200 -Subject: [PATCH 2/2] Makefile: Use supplied LDFLAGS to silence OE GNU_HASH QA - warning - -Fix OpenEmbedded/Yocto QA warning: - - ERROR: lshw-02.16-r1 do_package_qa: QA Issue: No GNU_HASH in the elf binary: 'build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/lshw/02.16-r1/packages-split/lshw/usr/sbin/lshw' [ldflags] - ERROR: lshw-02.16-r1 do_package_qa: QA run found fatal errors. Please consider fixing them. - ERROR: lshw-02.16-r1 do_package_qa: Function failed: do_package_qa - -Upstream-Status: Submitted -Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> ---- - src/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Makefile b/src/Makefile -index 654b786dd899..a441ba2bb666 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -25,7 +25,7 @@ CXXFLAGS=-g -Wall -g $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS) - ifeq ($(SQLITE), 1) - CXXFLAGS+= -DSQLITE $(shell pkg-config --cflags sqlite3) - endif --LDFLAGS=-L./core/ -g -+LDFLAGS+=-L./core/ -g - ifneq ($(shell $(LD) --help 2| grep -- --as-needed), ) - LDFLAGS+= -Wl,--as-needed - endif --- -2.7.4 - diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0003-sysfs-Fix-basename-build-with-musl.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0003-sysfs-Fix-basename-build-with-musl.patch deleted file mode 100644 index 34924939d..000000000 --- a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0003-sysfs-Fix-basename-build-with-musl.patch +++ /dev/null @@ -1,92 +0,0 @@ -From a89f2ba8496994c8b5e28a89202df15d64c648f9 Mon Sep 17 00:00:00 2001 -From: Krzysztof Kozlowski <krzk@kernel.org> -Date: Wed, 6 Jun 2018 12:47:02 +0200 -Subject: [PATCH] sysfs: Fix basename() build with musl - -musl provides only standard basename() which accepts non-const string. -This fixes build error with musl C library: - - | sysfs.cc: In function 'std::__cxx11::string sysfs_getbustype(const string&)': - | sysfs.cc:102:21: error: 'basename' was not declared in this scope - | "/devices/" + basename(path.c_str()); - | ^~~~~~~~ - -Upstream-Status: Submitted -Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> ---- - src/core/dasd.cc | 3 ++- - src/core/sysfs.cc | 9 +++++---- - 2 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/src/core/dasd.cc b/src/core/dasd.cc -index 626b8a872b0f..b27844215cc4 100644 ---- a/src/core/dasd.cc -+++ b/src/core/dasd.cc -@@ -2,6 +2,7 @@ - #include "osutils.h" - #include "dasd.h" - #include <glob.h> -+#include <libgen.h> - #include <string.h> - #include <fcntl.h> - #include <unistd.h> -@@ -42,7 +43,7 @@ bool scan_dasd(hwNode & n) - { - for(dev_num=0;dev_num<devices.gl_pathc;dev_num++) - { -- dev_name = basename(devices.gl_pathv[dev_num]); -+ dev_name = basename(const_cast<char *>(devices.gl_pathv[dev_num])); - for (std::vector<std::string>::iterator it = sysfs_attribs.begin(); it != sysfs_attribs.end(); ++it) - { - std::string attrib_fname = std::string(SYSFS_PREFIX) + dev_name + "/device/" + *it; -diff --git a/src/core/sysfs.cc b/src/core/sysfs.cc -index acc9d0056d5e..c56bab7b3b9f 100644 ---- a/src/core/sysfs.cc -+++ b/src/core/sysfs.cc -@@ -7,6 +7,7 @@ - #include "version.h" - #include "sysfs.h" - #include "osutils.h" -+#include <libgen.h> - #include <limits.h> - #include <unistd.h> - #include <stdlib.h> -@@ -99,7 +100,7 @@ static string sysfs_getbustype(const string & path) - { - devname = - string(fs.path + "/bus/") + string(namelist[i]->d_name) + -- "/devices/" + basename(path.c_str()); -+ "/devices/" + basename(const_cast<char *>(path.c_str())); - - if (samefile(devname, path)) - return string(namelist[i]->d_name); -@@ -139,7 +140,7 @@ static string sysfstobusinfo(const string & path) - - if (bustype == "virtio") - { -- string name = basename(path.c_str()); -+ string name = basename(const_cast<char *>(path.c_str())); - if (name.compare(0, 6, "virtio") == 0) - return "virtio@" + name.substr(6); - else -@@ -207,7 +208,7 @@ string entry::driver() const - string driverlink = This->devpath + "/driver"; - if (!exists(driverlink)) - return ""; -- return basename(readlink(driverlink).c_str()); -+ return basename(const_cast<char *>(readlink(driverlink).c_str())); - } - - -@@ -288,7 +289,7 @@ string entry::name_in_class(const string & classname) const - - string entry::name() const - { -- return basename(This->devpath.c_str()); -+ return basename(const_cast<char *>(This->devpath.c_str())); - } - - --- -2.7.4 - diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb b/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.19.2.bb index d1a733424..a26fac992 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.19.2.bb @@ -13,12 +13,10 @@ COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux" SRC_URI = " \ http://ezix.org/software/files/lshw-B.${PV}.tar.gz \ - file://0001-Makefile-Fix-cross-compilation.patch \ - file://0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch \ - file://0003-sysfs-Fix-basename-build-with-musl.patch \ + file://0001-Fix-musl-build.patch \ " -SRC_URI[md5sum] = "8671c6d94d6324a744b7f21f1bfecfd2" -SRC_URI[sha256sum] = "ae22ef11c934364be4fd2a0a1a7aadf4495a0251ec6979da280d342a89ca3c2f" +SRC_URI[md5sum] = "8c70d46e906688309095c73ecb9396e3" +SRC_URI[sha256sum] = "9bb347ac87142339a366a1759ac845e3dbb337ec000aa1b99b50ac6758a80f80" S = "${WORKDIR}/lshw-B.${PV}" diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch new file mode 100644 index 000000000..a302874d7 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch @@ -0,0 +1,90 @@ +From 1e6df25ac28dcd89f0324177bb55019422404b44 Mon Sep 17 00:00:00 2001 +From: Roberto Ierusalimschy <roberto@inf.puc-rio.br> +Date: Thu, 3 Sep 2020 15:32:17 +0800 +Subject: [PATCH] Fixed bug: barriers cannot be active during sweep + +Barriers cannot be active during sweep, even in generational mode. +(Although gen. mode is not incremental, it can hit a barrier when +deleting a thread and closing its upvalues.) The colors of objects are +being changed during sweep and, therefore, cannot be trusted. + +Upstream-Status: Backport [https://github.com/lua/lua/commit/a6da1472c0c5e05ff249325f979531ad51533110] +CVE: CVE-2020-24371 + +[Adjust code KGC_INC -> KGC_NORMAL, refer 69371c4b84becac09c445aae01d005b49658ef82] +Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com> +--- + src/lgc.c | 33 ++++++++++++++++++++++++--------- + 1 file changed, 24 insertions(+), 9 deletions(-) + +diff --git a/src/lgc.c b/src/lgc.c +index 973c269..7af23d5 100644 +--- a/src/lgc.c ++++ b/src/lgc.c +@@ -142,10 +142,17 @@ static int iscleared (global_State *g, const TValue *o) { + + + /* +-** barrier that moves collector forward, that is, mark the white object +-** being pointed by a black object. (If in sweep phase, clear the black +-** object to white [sweep it] to avoid other barrier calls for this +-** same object.) ++** Barrier that moves collector forward, that is, marks the white object ++** 'v' being pointed by the black object 'o'. In the generational ++** mode, 'v' must also become old, if 'o' is old; however, it cannot ++** be changed directly to OLD, because it may still point to non-old ++** objects. So, it is marked as OLD0. In the next cycle it will become ++** OLD1, and in the next it will finally become OLD (regular old). By ++** then, any object it points to will also be old. If called in the ++** incremental sweep phase, it clears the black object to white (sweep ++** it) to avoid other barrier calls for this same object. (That cannot ++** be done is generational mode, as its sweep does not distinguish ++** whites from deads.) + */ + void luaC_barrier_ (lua_State *L, GCObject *o, GCObject *v) { + global_State *g = G(L); +@@ -154,7 +161,8 @@ void luaC_barrier_ (lua_State *L, GCObject *o, GCObject *v) { + reallymarkobject(g, v); /* restore invariant */ + else { /* sweep phase */ + lua_assert(issweepphase(g)); +- makewhite(g, o); /* mark main obj. as white to avoid other barriers */ ++ if (g->gckind == KGC_NORMAL) /* incremental mode? */ ++ makewhite(g, o); /* mark 'o' as white to avoid other barriers */ + } + } + +@@ -299,10 +307,15 @@ static void markbeingfnz (global_State *g) { + + + /* +-** Mark all values stored in marked open upvalues from non-marked threads. +-** (Values from marked threads were already marked when traversing the +-** thread.) Remove from the list threads that no longer have upvalues and +-** not-marked threads. ++** For each non-marked thread, simulates a barrier between each open ++** upvalue and its value. (If the thread is collected, the value will be ++** assigned to the upvalue, but then it can be too late for the barrier ++** to act. The "barrier" does not need to check colors: A non-marked ++** thread must be young; upvalues cannot be older than their threads; so ++** any visited upvalue must be young too.) Also removes the thread from ++** the list, as it was already visited. Removes also threads with no ++** upvalues, as they have nothing to be checked. (If the thread gets an ++** upvalue later, it will be linked in the list again.) + */ + static void remarkupvals (global_State *g) { + lua_State *thread; +@@ -313,9 +326,11 @@ static void remarkupvals (global_State *g) { + p = &thread->twups; /* keep marked thread with upvalues in the list */ + else { /* thread is not marked or without upvalues */ + UpVal *uv; ++ lua_assert(!isold(thread) || thread->openupval == NULL); + *p = thread->twups; /* remove thread from the list */ + thread->twups = thread; /* mark that it is out of list */ + for (uv = thread->openupval; uv != NULL; uv = uv->u.open.next) { ++ lua_assert(getage(uv) <= getage(thread)); + if (uv->u.open.touched) { + markvalue(g, uv->v); /* remark upvalue's value */ + uv->u.open.touched = 0; +-- +1.9.1 + diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15945.patch b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15945.patch new file mode 100644 index 000000000..89ce49148 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15945.patch @@ -0,0 +1,167 @@ +From d8d344365945a534f700c82c5dd26f704f89fef3 Mon Sep 17 00:00:00 2001 +From: Roberto Ierusalimschy <roberto@inf.puc-rio.br> +Date: Wed, 5 Aug 2020 16:59:58 +0800 +Subject: [PATCH] Fixed bug: invalid 'oldpc' when returning to a function + +The field 'L->oldpc' is not always updated when control returns to a +function; an invalid value can seg. fault when computing 'changedline'. +(One example is an error in a finalizer; control can return to +'luaV_execute' without executing 'luaD_poscall'.) Instead of trying to +fix all possible corner cases, it seems safer to be resilient to invalid +values for 'oldpc'. Valid but wrong values at most cause an extra call +to a line hook. + +CVE: CVE-2020-15945 + +[Adjust the code to be applicable to the tree] + +Upstream-Status: Backport [https://github.com/lua/lua/commit/a2195644d89812e5b157ce7bac35543e06db05e3] + +Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com> +Signed-off-by: Joe Slater <joe.slater@@windriver.com> + +--- + src/ldebug.c | 30 +++++++++++++++--------------- + src/ldebug.h | 4 ++++ + src/ldo.c | 2 +- + src/lstate.c | 1 + + src/lstate.h | 2 +- + 5 files changed, 22 insertions(+), 17 deletions(-) + +diff --git a/src/ldebug.c b/src/ldebug.c +index 239affb..832b16c 100644 +--- a/src/ldebug.c ++++ b/src/ldebug.c +@@ -34,9 +34,8 @@ + #define noLuaClosure(f) ((f) == NULL || (f)->c.tt == LUA_TCCL) + + +-/* Active Lua function (given call info) */ +-#define ci_func(ci) (clLvalue((ci)->func)) +- ++/* inverse of 'pcRel' */ ++#define invpcRel(pc, p) ((p)->code + (pc) + 1) + + static const char *funcnamefromcode (lua_State *L, CallInfo *ci, + const char **name); +@@ -71,20 +70,18 @@ static void swapextra (lua_State *L) { + + /* + ** This function can be called asynchronously (e.g. during a signal). +-** Fields 'oldpc', 'basehookcount', and 'hookcount' (set by +-** 'resethookcount') are for debug only, and it is no problem if they +-** get arbitrary values (causes at most one wrong hook call). 'hookmask' +-** is an atomic value. We assume that pointers are atomic too (e.g., gcc +-** ensures that for all platforms where it runs). Moreover, 'hook' is +-** always checked before being called (see 'luaD_hook'). ++** Fields 'basehookcount' and 'hookcount' (set by 'resethookcount') ++** are for debug only, and it is no problem if they get arbitrary ++** values (causes at most one wrong hook call). 'hookmask' is an atomic ++** value. We assume that pointers are atomic too (e.g., gcc ensures that ++** for all platforms where it runs). Moreover, 'hook' is always checked ++** before being called (see 'luaD_hook'). + */ + LUA_API void lua_sethook (lua_State *L, lua_Hook func, int mask, int count) { + if (func == NULL || mask == 0) { /* turn off hooks? */ + mask = 0; + func = NULL; + } +- if (isLua(L->ci)) +- L->oldpc = L->ci->u.l.savedpc; + L->hook = func; + L->basehookcount = count; + resethookcount(L); +@@ -665,7 +662,10 @@ l_noret luaG_runerror (lua_State *L, const char *fmt, ...) { + void luaG_traceexec (lua_State *L) { + CallInfo *ci = L->ci; + lu_byte mask = L->hookmask; ++ const Proto *p = ci_func(ci)->p; + int counthook = (--L->hookcount == 0 && (mask & LUA_MASKCOUNT)); ++ /* 'L->oldpc' may be invalid; reset it in this case */ ++ int oldpc = (L->oldpc < p->sizecode) ? L->oldpc : 0; + if (counthook) + resethookcount(L); /* reset count */ + else if (!(mask & LUA_MASKLINE)) +@@ -677,15 +677,15 @@ void luaG_traceexec (lua_State *L) { + if (counthook) + luaD_hook(L, LUA_HOOKCOUNT, -1); /* call count hook */ + if (mask & LUA_MASKLINE) { +- Proto *p = ci_func(ci)->p; + int npc = pcRel(ci->u.l.savedpc, p); + int newline = getfuncline(p, npc); + if (npc == 0 || /* call linehook when enter a new function, */ +- ci->u.l.savedpc <= L->oldpc || /* when jump back (loop), or when */ +- newline != getfuncline(p, pcRel(L->oldpc, p))) /* enter a new line */ ++ ci->u.l.savedpc <= invpcRel(oldpc, p) || /* when jump back (loop), or when */ ++ newline != getfuncline(p, oldpc)) /* enter a new line */ + luaD_hook(L, LUA_HOOKLINE, newline); /* call line hook */ ++ ++ L->oldpc = npc; /* 'pc' of last call to line hook */ + } +- L->oldpc = ci->u.l.savedpc; + if (L->status == LUA_YIELD) { /* did hook yield? */ + if (counthook) + L->hookcount = 1; /* undo decrement to zero */ +diff --git a/src/ldebug.h b/src/ldebug.h +index 0e31546..c224cc4 100644 +--- a/src/ldebug.h ++++ b/src/ldebug.h +@@ -13,6 +13,10 @@ + + #define pcRel(pc, p) (cast(int, (pc) - (p)->code) - 1) + ++/* Active Lua function (given call info) */ ++#define ci_func(ci) (clLvalue((ci)->func)) ++ ++ + #define getfuncline(f,pc) (((f)->lineinfo) ? (f)->lineinfo[pc] : -1) + + #define resethookcount(L) (L->hookcount = L->basehookcount) +diff --git a/src/ldo.c b/src/ldo.c +index 90b695f..f66ac1a 100644 +--- a/src/ldo.c ++++ b/src/ldo.c +@@ -382,7 +382,7 @@ int luaD_poscall (lua_State *L, CallInfo *ci, StkId firstResult, int nres) { + luaD_hook(L, LUA_HOOKRET, -1); + firstResult = restorestack(L, fr); + } +- L->oldpc = ci->previous->u.l.savedpc; /* 'oldpc' for caller function */ ++ L->oldpc = pcRel(ci->u.l.savedpc, ci_func(ci)->p); /* 'oldpc' for caller function */ + } + res = ci->func; /* res == final position of 1st result */ + L->ci = ci->previous; /* back to caller */ +diff --git a/src/lstate.c b/src/lstate.c +index 9194ac3..3573e36 100644 +--- a/src/lstate.c ++++ b/src/lstate.c +@@ -236,6 +236,7 @@ static void preinit_thread (lua_State *L, global_State *g) { + L->nny = 1; + L->status = LUA_OK; + L->errfunc = 0; ++ L->oldpc = 0; + } + + +diff --git a/src/lstate.h b/src/lstate.h +index a469466..d75eadf 100644 +--- a/src/lstate.h ++++ b/src/lstate.h +@@ -164,7 +164,6 @@ struct lua_State { + StkId top; /* first free slot in the stack */ + global_State *l_G; + CallInfo *ci; /* call info for current function */ +- const Instruction *oldpc; /* last pc traced */ + StkId stack_last; /* last free slot in the stack */ + StkId stack; /* stack base */ + UpVal *openupval; /* list of open upvalues in this stack */ +@@ -174,6 +173,7 @@ struct lua_State { + CallInfo base_ci; /* CallInfo for first level (C calling Lua) */ + volatile lua_Hook hook; + ptrdiff_t errfunc; /* current error handling function (stack index) */ ++ int oldpc; /* last pc traced */ + int stacksize; + int basehookcount; + int hookcount; +-- +2.13.3 + diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb b/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb index d3461b06d..7d84ea60b 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb @@ -8,6 +8,8 @@ SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz;name=tarballsrc \ file://lua.pc.in \ file://0001-Allow-building-lua-without-readline-on-Linux.patch \ file://CVE-2020-15888.patch \ + file://CVE-2020-15945.patch \ + file://0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch \ " # if no test suite matches PV release of Lua exactly, download the suite for the closest Lua release. diff --git a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb index cc9039416..6573efcd9 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb @@ -3,13 +3,15 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=d739bb9250a55c124a545b588fd76771" HOMEPAGE = "http://luajit.org" -PV = "2.1.0~beta3" -SRCREV = "0ad60ccbc3768fa8e3e726858adf261950edbc22" SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http;branch=v2.1 \ file://0001-Do-not-strip-automatically-this-leaves-the-stripping.patch \ file://clang.patch \ " +# Set PV to a version tag and date associated with SRCREV if it is later. +PV = "2.1.0~beta3-200809" +SRCREV = "94d4abcca966df2cc423e821bcacd04898f73117" + S = "${WORKDIR}/git" inherit pkgconfig binconfig siteinfo diff --git a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.4.bb b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.5.bb index fa3c73451..7980960f1 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.4.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.5.bb @@ -10,8 +10,8 @@ RDEPENDS_${PN} = "python3 python3-modules" inherit python3native SRC_URI = "https://www.mercurial-scm.org/release/${BP}.tar.gz" -SRC_URI[md5sum] = "0859029d0bb54bcf7c583c55680573cb" -SRC_URI[sha256sum] = "1df8d1978aefcbb65dc51e3666a452583f47aeaf3c5682e4c00a3b23cd805d6a" +SRC_URI[md5sum] = "17b21729cbc61dda80b2e3dfc046319f" +SRC_URI[sha256sum] = "c1ed28e1534304a7a4981ed59905286d1c56acd5b75755eedd184171a4a782b4" S = "${WORKDIR}/mercurial-${PV}" diff --git a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.0.bb b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.1.bb index 0f5ef7052..359324266 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.0.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.1.bb @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=dd0607f896f392c8b7d0290a676efc24" SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1 \ " -SRCREV = "d34771cafc87b358ba421faca28facc7f8080174" +SRCREV = "db78ac1d7716f56fc9f1b030b715f872f93964e4" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch deleted file mode 100644 index 618ce2689..000000000 --- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch +++ /dev/null @@ -1,33 +0,0 @@ -From a763610719e7d7f6cdc45569b6fbfdb91bb7c87b Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 27 Jul 2019 14:30:08 -0700 -Subject: [PATCH] Do not include syscrtl.h with glibc - -glibc 2.30 has deprecated it see [1] -Fixes -sys/sysctl.h:21:2: error: "The <sys/sysctl.h> header is deprecated and will be removed." [-Werror,-W#warnings] - -[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=744e829637162bb7d5029632aacf341c64b86990 - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - src/helper/options.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/helper/options.c b/src/helper/options.c -index 12755e010..4007e37f6 100644 ---- a/src/helper/options.c -+++ b/src/helper/options.c -@@ -34,7 +34,7 @@ - #if IS_DARWIN - #include <libproc.h> - #endif --#ifdef HAVE_SYS_SYSCTL_H -+#if defined(HAVE_SYS_SYSCTL_H) && !defined(__GLIBC__) - #include <sys/sysctl.h> - #endif - #if IS_WIN32 && !IS_CYGWIN --- -2.22.0 - diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-bitbang-Make-bitbang_swd-extern-definition.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-bitbang-Make-bitbang_swd-extern-definition.patch deleted file mode 100644 index d42b628da..000000000 --- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-bitbang-Make-bitbang_swd-extern-definition.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 428f9f3c4a5be973e4c7fc1325ae9dbe41040df2 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Thu, 13 Aug 2020 17:47:35 -0700 -Subject: [PATCH] bitbang: Make bitbang_swd extern definition - -Fixes build with gcc10+ - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - src/jtag/drivers/bitbang.c | 1 + - src/jtag/drivers/bitbang.h | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/jtag/drivers/bitbang.c b/src/jtag/drivers/bitbang.c -index b5078c080..f8612aade 100644 ---- a/src/jtag/drivers/bitbang.c -+++ b/src/jtag/drivers/bitbang.c -@@ -43,6 +43,7 @@ static int bitbang_stableclocks(int num_cycles); - static void bitbang_swd_write_reg(uint8_t cmd, uint32_t value, uint32_t ap_delay_clk); - - struct bitbang_interface *bitbang_interface; -+const struct swd_driver bitbang_swd; - - /* DANGER!!!! clock absolutely *MUST* be 0 in idle or reset won't work! - * -diff --git a/src/jtag/drivers/bitbang.h b/src/jtag/drivers/bitbang.h -index 577717ebd..0faf5d9ae 100644 ---- a/src/jtag/drivers/bitbang.h -+++ b/src/jtag/drivers/bitbang.h -@@ -57,7 +57,7 @@ struct bitbang_interface { - void (*swdio_drive)(bool on); - }; - --const struct swd_driver bitbang_swd; -+extern const struct swd_driver bitbang_swd; - - extern bool swd_mode; - --- -2.28.0 - 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 c7d754fdb..4f6aaa8a6 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb @@ -9,15 +9,13 @@ SRC_URI = " \ git://repo.or.cz/r/git2cl.git;protocol=http;destsuffix=tools/git2cl;name=git2cl \ git://repo.or.cz/r/jimtcl.git;protocol=http;destsuffix=git/jimtcl;name=jimtcl \ git://repo.or.cz/r/libjaylink.git;protocol=http;destsuffix=git/src/jtag/drivers/libjaylink;name=libjaylink \ - file://0001-Do-not-include-syscrtl.h-with-glibc.patch \ - file://0001-bitbang-Make-bitbang_swd-extern-definition.patch \ " SRCREV_FORMAT = "openocd" -SRCREV_openocd = "ded67990255cc1e63c77832ffd6e6bef9120873d" +SRCREV_openocd = "d46f28c2ea2611f5fbbc679a5eed253d3dcd2fe3" SRCREV_git2cl = "8373c9f74993e218a08819cbcdbab3f3564bbeba" -SRCREV_jimtcl = "dc4ba7770d580800634f90b67a24e077b4a26d98" -SRCREV_libjaylink = "3322dfa5e7aa56f5b12b7f2197e3e6b850b7b66e" +SRCREV_jimtcl = "0aa0fb4e3a38d38a49de9eb585d93d63a370dcf6" +SRCREV_libjaylink = "9aa7a5957c07bb6e862fc1a6d3153d109c7407e4" PV = "0.10+gitr${SRCPV}" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch b/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch index 21050f760..a4804d184 100755..100644 --- a/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch +++ b/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch @@ -1,31 +1,32 @@ -php: remove host specific info from header file +From 1234a8ef7c5ab88e24bc5908f0ccfd55af21aa39 Mon Sep 17 00:00:00 2001 +From: Leon Anavi <leon.anavi@konsulko.com> +Date: Mon, 31 Aug 2020 16:03:27 +0300 +Subject: [PATCH] php: remove host specific info from header file +Based on: https://sources.debian.org/data/main/p/php7.3/7.3.6-1/debian/patches/ 0036-php-5.4.9-fixheader.patch Upstream-Status: Inappropriate [not author] Signed-off-by: Joe Slater <joe.slater@windriver.com> - ---- -From: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org> -Date: Sat, 2 May 2015 10:26:56 +0200 -Subject: php-5.4.9-fixheader - -Make generated php_config.h constant across rebuilds. +Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 433d7e6..41893d7 100644 +index 2a474ba36d..6d22a21630 100644 --- a/configure.ac +++ b/configure.ac -@@ -1357,7 +1357,7 @@ PHP_BUILD_DATE=`date -u +%Y-%m-%d` +@@ -1323,7 +1323,7 @@ PHP_BUILD_DATE=`date -u +%Y-%m-%d` fi AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date]) --PHP_UNAME=`uname -a | xargs` -+PHP_UNAME=`uname | xargs` +-UNAME=`uname -a | xargs` ++UNAME=`uname | xargs` + PHP_UNAME=${PHP_UNAME:-$UNAME} AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output]) PHP_OS=`uname | xargs` - AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output]) +-- +2.17.1 + diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.4.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.9.bb index f74533c1d..abd8b1672 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.4.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.9.bb @@ -31,9 +31,10 @@ SRC_URI_append_class-target = " \ file://0001-opcache-config.m4-enable-opcache.patch \ file://xfail_two_bug_tests.patch \ " + S = "${WORKDIR}/php-${PV}" -SRC_URI[md5sum] = "262c258a3b8b5699fcca89a64e58758c" -SRC_URI[sha256sum] = "308e8f4182ec8a2767b0b1b8e1e7c69fb149b37cfb98ee4a37475e082fa9829f" +SRC_URI[md5sum] = "e68a66c54b080d108831f6dc2e1e403d" +SRC_URI[sha256sum] = "2e270958a4216480da7886743438ccc92b6acf32ea96fefda88d07e0a5095deb" inherit autotools pkgconfig python3native gettext diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.12.3.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.13.0.bb index 21ad7a460..f2c5e2bee 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.12.3.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.13.0.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b" DEPENDS = "zlib" DEPENDS_append_class-target = " protobuf-native" -SRCREV = "31ebe2ac71400344a5db91ffc13c4ddfb7589f92" +SRCREV = "fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a" SRC_URI = "git://github.com/protocolbuffers/protobuf.git \ file://run-ptest \ diff --git a/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0003-src-Makefile-Fix-Makefile-macro-error.patch b/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0003-src-Makefile-Fix-Makefile-macro-error.patch new file mode 100644 index 000000000..3d861fc62 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0003-src-Makefile-Fix-Makefile-macro-error.patch @@ -0,0 +1,29 @@ +From ea4ca50ca9cab755f3722096158a46deec0e663a Mon Sep 17 00:00:00 2001 +From: Arthur She <arthur.she@linaro.org> +Date: Tue, 25 Aug 2020 09:51:26 -0700 +Subject: [PATCH] src/Makefile: Fix Makefile macro error + +This error caused the curl library wouldn't be linked correctly. + +Upstream-Status: Pending +Signed-off-by: Arthur She <arthur.she@linaro.org> +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 1cdf8b0..acd04dd 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -57,7 +57,7 @@ ifeq ($(MUST_BUILD_CURL_CLIENT),yes) + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curltransaction + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curlmulti +- TRANSPORT_LIBDEP += $(shell $CURL_CONFIG --libs) ++ TRANSPORT_LIBDEP += $(shell $(CURL_CONFIG) --libs) + TRANSPORT_INCLUDES += -Isrcdir/lib/curl_transport + endif + ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes) +-- +2.17.1 + diff --git a/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.54.02.bb b/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.54.02.bb index c1f0b78ca..aba6dfd88 100644 --- a/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.54.02.bb +++ b/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.54.02.bb @@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://doc/COPYING;md5=aefbf81ba0750f02176b6f86752ea951" SRC_URI = "git://github.com/mirror/xmlrpc-c.git \ file://0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch \ file://0002-fix-formatting-issues.patch \ + file://0003-src-Makefile-Fix-Makefile-macro-error.patch \ " #Release 1.54.02 diff --git a/meta-openembedded/meta-oe/recipes-extended/brotli/brotli/838.patch b/meta-openembedded/meta-oe/recipes-extended/brotli/brotli/838.patch new file mode 100644 index 000000000..98b888760 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-extended/brotli/brotli/838.patch @@ -0,0 +1,48 @@ +Upstream-Status: Backport [https://github.com/google/brotli/pull/838] +From 092446fafb4bfb81738853b7c7f76b293cd92a80 Mon Sep 17 00:00:00 2001 +From: Evgenii Kliuchnikov <eustas.ru@gmail.com> +Date: Wed, 2 Sep 2020 10:49:49 +0200 +Subject: [PATCH] Revert "Add runtime linker path to pkg-config files (#740)" + +This reverts commit 31754d4ffce14153b5c2addf7a11019ec23f51c1. +--- + scripts/libbrotlicommon.pc.in | 2 +- + scripts/libbrotlidec.pc.in | 2 +- + scripts/libbrotlienc.pc.in | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/scripts/libbrotlicommon.pc.in b/scripts/libbrotlicommon.pc.in +index 10ca969e..2a8cf7a3 100644 +--- a/scripts/libbrotlicommon.pc.in ++++ b/scripts/libbrotlicommon.pc.in +@@ -7,5 +7,5 @@ Name: libbrotlicommon + URL: https://github.com/google/brotli + Description: Brotli common dictionary library + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -R${libdir} -lbrotlicommon ++Libs: -L${libdir} -lbrotlicommon + Cflags: -I${includedir} +diff --git a/scripts/libbrotlidec.pc.in b/scripts/libbrotlidec.pc.in +index e7c3124f..6f8ef2e4 100644 +--- a/scripts/libbrotlidec.pc.in ++++ b/scripts/libbrotlidec.pc.in +@@ -7,6 +7,6 @@ Name: libbrotlidec + URL: https://github.com/google/brotli + Description: Brotli decoder library + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -R${libdir} -lbrotlidec ++Libs: -L${libdir} -lbrotlidec + Requires.private: libbrotlicommon >= 1.0.2 + Cflags: -I${includedir} +diff --git a/scripts/libbrotlienc.pc.in b/scripts/libbrotlienc.pc.in +index 4dd0811b..2098afe2 100644 +--- a/scripts/libbrotlienc.pc.in ++++ b/scripts/libbrotlienc.pc.in +@@ -7,6 +7,6 @@ Name: libbrotlienc + URL: https://github.com/google/brotli + Description: Brotli encoder library + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -R${libdir} -lbrotlienc ++Libs: -L${libdir} -lbrotlienc + Requires.private: libbrotlicommon >= 1.0.2 + Cflags: -I${includedir} 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.9.bb index 32f855844..0038ba74d 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.9.bb @@ -6,9 +6,10 @@ BUGTRACKER = "https://github.com/google/brotli/issues" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=941ee9cd1609382f946352712a319b4b" -SRC_URI = "git://github.com/google/brotli.git" -# tag 1.0.7 -SRCREV= "d6d98957ca8ccb1ef45922e978bb10efca0ea541" +SRC_URI = "git://github.com/google/brotli.git \ + file://838.patch " +# tag 1.0.9 +SRCREV= "e61745a6b7add50d380cfd7d3883dd6c62fc2c71" S = "${WORKDIR}/git" inherit cmake lib_package diff --git a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc index 5214715cd..cffa7f5dc 100644 --- a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc +++ b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc @@ -12,7 +12,7 @@ SRC_URI = "ftp://ftp.invisible-island.net/byacc/byacc-${PV}.tgz \ EXTRA_OECONF += "--program-transform-name='s,^,b,'" -BBCLASSEXTEND = "native" +BBCLASSEXTEND = "native nativesdk" inherit autotools diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.11.0.bb b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.12.0.bb index a70e82e03..40a8442a5 100644 --- a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.11.0.bb +++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.12.0.bb @@ -15,8 +15,8 @@ SRC_URI = "http://collectd.org/files/collectd-${PV}.tar.bz2 \ file://0006-libcollectdclient-Fix-string-overflow-errors.patch \ file://0001-Remove-including-sys-sysctl.h-on-glibc-based-systems.patch \ " -SRC_URI[md5sum] = "13b1c946f6684abe453e24b5cd80ec45" -SRC_URI[sha256sum] = "37b10a806e34aa8570c1cafa6006c604796fae13cc2e1b3e630d33dcba9e5db2" +SRC_URI[md5sum] = "2b23a65960bc323d065234776a542e04" +SRC_URI[sha256sum] = "5bae043042c19c31f77eb8464e56a01a5454e0b39fa07cf7ad0f1bfc9c3a09d6" inherit autotools python3native update-rc.d pkgconfig systemd diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/238.patch b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/245.patch index 14c44e6ed..43057489c 100644 --- a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/238.patch +++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/245.patch @@ -1,6 +1,6 @@ -From 214f8c71552fc096077f0b916dad75b31eefea3d Mon Sep 17 00:00:00 2001 +From 57fd61ea5c58a4f9fcd7140b53ac6cd6e971ef47 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it> -Date: Fri, 31 Jul 2020 15:26:35 +0200 +Date: Fri, 31 Jul 2020 15:16:02 +0200 Subject: [PATCH] dlt_offline: fix build failures with gcc-10 see bug report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=957140 @@ -14,11 +14,26 @@ see bug report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=957140 /usr/bin/ld: CMakeFiles/dlt-daemon.dir/dlt_daemon_event_handler.c.o:./obj-x86_64-linux-gnu/src/daemon/./src/offlinelogstorage/dlt_offline_logstorage.h:116: multiple definition of `g_logstorage_cache_max'; CMakeFiles/dlt-daemon.dir/dlt-daemon.c.o:./obj-x86_64-linux-gnu/src/daemon/./src/offlinelogstorage/dlt_offline_logstorage.h:116: first defined here /usr/bin/ld: CMakeFiles/dlt-daemon.dir/dlt_daemon_offline_logstorage.c.o:./obj-x86_64-linux-gnu/src/daemon/./src/offlinelogstorage/dlt_offline_logstorage.h:116: multiple definition of `g_logstorage_cache_max'; CMakeFiles/dlt-daemon.dir/dlt-daemon.c.o:./obj-x86_64-linux-gnu/src/daemon/./src/offlinelogstorage/dlt_offline_logstorage.h:116: first defined here --- - src/offlinelogstorage/dlt_offline_logstorage.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/daemon/dlt_daemon_offline_logstorage.c | 1 + + src/offlinelogstorage/dlt_offline_logstorage.h | 4 ++-- + src/offlinelogstorage/dlt_offline_logstorage_behavior.c | 1 + + tests/gtest_dlt_daemon_offline_log.cpp | 1 + + 4 files changed, 5 insertions(+), 2 deletions(-) +diff --git a/src/daemon/dlt_daemon_offline_logstorage.c b/src/daemon/dlt_daemon_offline_logstorage.c +index 0b3c14f..db9637e 100644 +--- a/src/daemon/dlt_daemon_offline_logstorage.c ++++ b/src/daemon/dlt_daemon_offline_logstorage.c +@@ -56,6 +56,7 @@ DLT_STATIC DltReturnValue dlt_logstorage_split_ecuid(char *key, + return DLT_RETURN_OK; + } + ++unsigned int g_logstorage_cache_max; + /** + * dlt_logstorage_split_ctid + * diff --git a/src/offlinelogstorage/dlt_offline_logstorage.h b/src/offlinelogstorage/dlt_offline_logstorage.h -index b58da70..8ad84b8 100644 +index b58da70..c9bc93b 100644 --- a/src/offlinelogstorage/dlt_offline_logstorage.h +++ b/src/offlinelogstorage/dlt_offline_logstorage.h @@ -114,9 +114,9 @@ @@ -26,10 +41,34 @@ index b58da70..8ad84b8 100644 /* logstorage max cache */ -unsigned int g_logstorage_cache_max; -+static unsigned int g_logstorage_cache_max; ++extern unsigned int g_logstorage_cache_max; /* current logstorage cache size */ -unsigned int g_logstorage_cache_size; -+static unsigned int g_logstorage_cache_size; ++extern unsigned int g_logstorage_cache_size; typedef struct { +diff --git a/src/offlinelogstorage/dlt_offline_logstorage_behavior.c b/src/offlinelogstorage/dlt_offline_logstorage_behavior.c +index afbf8c4..edef482 100644 +--- a/src/offlinelogstorage/dlt_offline_logstorage_behavior.c ++++ b/src/offlinelogstorage/dlt_offline_logstorage_behavior.c +@@ -32,6 +32,7 @@ + #include "dlt_offline_logstorage_behavior.h" + #include "dlt_offline_logstorage_behavior_internal.h" + ++unsigned int g_logstorage_cache_size; + /** + * dlt_logstorage_log_file_name + * +diff --git a/tests/gtest_dlt_daemon_offline_log.cpp b/tests/gtest_dlt_daemon_offline_log.cpp +index b8965de..0bd4d5e 100644 +--- a/tests/gtest_dlt_daemon_offline_log.cpp ++++ b/tests/gtest_dlt_daemon_offline_log.cpp +@@ -29,6 +29,7 @@ extern "C" + #include <fcntl.h> + } + ++unsigned int g_logstorage_cache_max; + /* Begin Method: dlt_logstorage::t_dlt_logstorage_list_add*/ + TEST(t_dlt_logstorage_list_add, normal) + { diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb index 3a2b40515..f3fcee4d2 100644 --- a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb +++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb @@ -17,8 +17,8 @@ DEPENDS = "zlib gzip-native" SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=https \ file://0002-Don-t-execute-processes-as-a-specific-user.patch \ file://0004-Modify-systemd-config-directory.patch \ - file://238.patch \ file://241.patch \ + file://245.patch \ " SRCREV = "f1ac087c766827b1d0ed9c3a814b3cc052e948f2" diff --git a/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.4.2.bb b/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.4.2.bb index 050b7da3d..3e7fb2a07 100644 --- a/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.4.2.bb +++ b/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.4.2.bb @@ -13,4 +13,8 @@ SRCREV = "800e4b2e6280531a84fd23ee0b48e16baeb90878" S = "${WORKDIR}/git" -inherit autotools-brokensep +inherit autotools-brokensep update-alternatives + +ALTERNATIVE_${PN} = "hexedit" +ALTERNATIVE_LINK_NAME[hexedit] = "${bindir}/hexedit" + diff --git a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb index 883a6ffe9..457a97453 100644 --- a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb +++ b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb @@ -39,8 +39,8 @@ EXTRA_OECONF += "\ --enable-foomatic-drv-install \ --disable-foomatic-ppd-install \ --disable-foomatic-rip-hplip-install \ - --with-cupsbackenddir=${libdir}/cups/backend \ - --with-cupsfilterdir=${libdir}/cups/filter \ + --with-cupsbackenddir=${libexecdir}/cups/backend \ + --with-cupsfilterdir=${libexecdir}/cups/filter \ " EXTRA_OEMAKE = "rulessystemdir=${systemd_unitdir}/system/" @@ -52,7 +52,7 @@ do_install_append() { sed -i -e "s|/usr/bin/python|/usr/bin/env python3|g" ${D}${datadir}/hplip/*.py } -PACKAGES += "${PN}-ppd ${PN}-cups ${PN}-backend ${PN}-filter ${PN}-hal" +PACKAGE_BEFORE_PN += "${PN}-ppd ${PN}-cups ${PN}-backend ${PN}-filter ${PN}-hal" RDEPENDS_${PN} += " \ python3\ @@ -70,15 +70,15 @@ RDEPENDS_${PN}-filter += "perl" # need to snag the debug file or OE will fail on backend package FILES_${PN}-dbg += "\ - ${libdir}/cups/backend/.debug \ + ${libexecdir}/cups/backend/.debug \ ${PYTHON_SITEPACKAGES_DIR}/.debug \ - ${libdir}/cups/filter/.debug " + ${libexecdir}/cups/filter/.debug " FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la" FILES_${PN}-ppd = "${datadir}/ppd" FILES_${PN}-cups = "${datadir}/cups" -FILES_${PN}-backend = "${libdir}/cups/backend" -FILES_${PN}-filter = "${libdir}/cups/filter" +FILES_${PN}-backend = "${libexecdir}/cups/backend" +FILES_${PN}-filter = "${libexecdir}/cups/filter" FILES_${PN}-hal = "${datadir}/hal" FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/*.so" diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Remove-buggy-test-confusing-host-and-target.patch b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Remove-buggy-test-confusing-host-and-target.patch new file mode 100644 index 000000000..7c29e15e2 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Remove-buggy-test-confusing-host-and-target.patch @@ -0,0 +1,31 @@ +From 8ce50bf569ec2d931735180079bbe507730626c8 Mon Sep 17 00:00:00 2001 +From: Yann Dirson <yann@blade-group.com> +Date: Mon, 7 Sep 2020 18:17:21 +0200 +Subject: [PATCH] Remove buggy test confusing host and target + +--- + src/libcec/cmake/CheckPlatformSupport.cmake | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/src/libcec/cmake/CheckPlatformSupport.cmake b/src/libcec/cmake/CheckPlatformSupport.cmake +index 1d99bd8..31dac4f 100644 +--- a/src/libcec/cmake/CheckPlatformSupport.cmake ++++ b/src/libcec/cmake/CheckPlatformSupport.cmake +@@ -266,14 +266,6 @@ else() + DESTINATION python/cec) + endif() + else() +- if(EXISTS "/etc/os-release") +- file(READ "/etc/os-release" OS_RELEASE) +- string(REGEX MATCH "ID(_LIKE)?=debian" IS_DEBIAN ${OS_RELEASE}) +- if (IS_DEBIAN) +- SET(PYTHON_PKG_DIR "dist-packages") +- endif() +- endif() +- + if (NOT PYTHON_PKG_DIR) + SET(PYTHON_PKG_DIR "site-packages") + endif() +-- +2.28.0 + diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb index 894ee52f9..48be1fdac 100644 --- a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb +++ b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb @@ -13,16 +13,22 @@ SRCREV = "29d82c80bcc62be2878a9ac080de7eb286c4beb9" SRC_URI = "git://github.com/Pulse-Eight/libcec.git;branch=release \ file://0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch \ file://0001-Enhance-reproducibility.patch \ + file://0001-Remove-buggy-test-confusing-host-and-target.patch \ " S = "${WORKDIR}/git" inherit cmake pkgconfig -# Put client tools into a separate package -PACKAGE_BEFORE_PN += "${PN}-tools" -FILES_${PN}-tools = "${bindir}" -RDEPENDS_${PN}-tools = "python3-${BPN} python3-core" +# default config is for RaspberryPi API, use the Linux 4.10+ API by default +PLATFORM_CMAKE_FLAGS ?= "-DHAVE_LINUX_API=1 -DHAVE_RPI_API=0" +EXTRA_OECMAKE += "${PLATFORM_CMAKE_FLAGS}" + +# Put client examples into separate packages +PACKAGE_BEFORE_PN += "${PN}-examples-python ${PN}-examples" +FILES_${PN}-examples-python = "${bindir}/py*" +FILES_${PN}-examples = "${bindir}" +RDEPENDS_${PN}-examples-python = "python3-${BPN} python3-core" # Create the wrapper for python3 PACKAGES += "python3-${BPN}" diff --git a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch index 5adc7d9fd..d5fb8e7c8 100644 --- a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch +++ b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch @@ -1,6 +1,3 @@ -From 82f98dcbc429bbe89a9837c533cbcbc02e77c790 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com> -Date: Tue, 28 Jun 2016 12:43:31 +0100 Subject: [PATCH] idn: fix printf() format security warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -48,35 +45,37 @@ Content-Transfer-Encoding: 8bit | ^ Signed-off-by: André Draszik <adraszik@tycoint.com> ---- +Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com> + Upstream-Status: Pending +--- src/idn.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/idn.c b/src/idn.c -index be1c7d1..68e4291 100644 +index f2fee11..c6e5caa 100644 --- a/src/idn.c +++ b/src/idn.c -@@ -170,7 +170,7 @@ main (int argc, char *argv[]) +@@ -169,7 +169,7 @@ main (int argc, char *argv[]) (args_info.idna_to_unicode_given ? 1 : 0) + (args_info.nfkc_given ? 1 : 0) != 1) { -- error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified")); -+ error (0, 0, "%s", _("only one of -s, -e, -d, -a, -u or -n can be specified")); +- error (0, 0, ++ error (0, 0, "%s", + _("only one of -s, -e, -d, -a, -u or -n can be specified")); usage (EXIT_FAILURE); } +@@ -183,7 +183,7 @@ main (int argc, char *argv[]) -@@ -185,7 +185,7 @@ main (int argc, char *argv[]) if (!args_info.quiet_given - && args_info.inputs_num == 0 - && isatty (fileno (stdin))) + && args_info.inputs_num == 0 && isatty (fileno (stdin))) - fprintf (stderr, _("Type each input string on a line by itself, " + fprintf (stderr, "%s", _("Type each input string on a line by itself, " "terminated by a newline character.\n")); do -@@ -197,7 +197,7 @@ main (int argc, char *argv[]) +@@ -195,7 +195,7 @@ main (int argc, char *argv[]) if (feof (stdin)) break; @@ -85,7 +84,7 @@ index be1c7d1..68e4291 100644 } if (strlen (line) > 0) -@@ -215,7 +215,7 @@ main (int argc, char *argv[]) +@@ -213,7 +213,7 @@ main (int argc, char *argv[]) if (!q) { free (p); @@ -94,7 +93,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UTF-8 to UCS-4")); } -@@ -240,7 +240,7 @@ main (int argc, char *argv[]) +@@ -238,7 +238,7 @@ main (int argc, char *argv[]) if (!q) { free (r); @@ -103,7 +102,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UTF-8 to UCS-4")); } -@@ -277,7 +277,7 @@ main (int argc, char *argv[]) +@@ -275,7 +275,7 @@ main (int argc, char *argv[]) q = stringprep_utf8_to_ucs4 (p, -1, &len); free (p); if (!q) @@ -112,7 +111,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UTF-8 to UCS-4")); if (args_info.debug_given) -@@ -336,7 +336,7 @@ main (int argc, char *argv[]) +@@ -334,7 +334,7 @@ main (int argc, char *argv[]) r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL); free (q); if (!r) @@ -121,7 +120,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UCS-4 to UTF-8")); p = stringprep_utf8_to_locale (r); -@@ -360,7 +360,7 @@ main (int argc, char *argv[]) +@@ -358,7 +358,7 @@ main (int argc, char *argv[]) q = stringprep_utf8_to_ucs4 (p, -1, NULL); free (p); if (!q) @@ -130,7 +129,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UCS-4 to UTF-8")); if (args_info.debug_given) -@@ -438,7 +438,7 @@ main (int argc, char *argv[]) +@@ -436,7 +436,7 @@ main (int argc, char *argv[]) if (!q) { free (p); @@ -139,7 +138,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UCS-4 to UTF-8")); } -@@ -494,7 +494,7 @@ main (int argc, char *argv[]) +@@ -492,7 +492,7 @@ main (int argc, char *argv[]) r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL); free (q); if (!r) @@ -148,7 +147,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UTF-8 to UCS-4")); p = stringprep_utf8_to_locale (r); -@@ -523,7 +523,7 @@ main (int argc, char *argv[]) +@@ -521,7 +521,7 @@ main (int argc, char *argv[]) if (!q) { free (p); @@ -157,7 +156,7 @@ index be1c7d1..68e4291 100644 _("could not convert from UTF-8 to UCS-4")); } -@@ -537,7 +537,8 @@ main (int argc, char *argv[]) +@@ -535,7 +535,8 @@ main (int argc, char *argv[]) r = stringprep_utf8_nfkc_normalize (p, -1); free (p); if (!r) @@ -167,7 +166,7 @@ index be1c7d1..68e4291 100644 if (args_info.debug_given) { -@@ -547,7 +548,7 @@ main (int argc, char *argv[]) +@@ -545,7 +546,7 @@ main (int argc, char *argv[]) if (!q) { free (r); @@ -177,5 +176,5 @@ index be1c7d1..68e4291 100644 } -- -2.8.1 +2.25.1 diff --git a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.35.bb b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.36.bb index 105740354..4c6c8fde4 100644 --- a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.35.bb +++ b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.36.bb @@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \ file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \ - file://lib/idna.h;endline=21;md5=37cffad24807f446a24de3e7371f20b9 \ - file://src/idn.c;endline=20;md5=09e97034a8877b3451cb65065fc2c06e" + file://lib/idna.h;endline=21;md5=c381d797e2d7fbdace7c147b1285d076 \ + file://src/idn.c;endline=20;md5=7d88aa87b0494d690bdf7748fe08d536" DEPENDS = "virtual/libiconv autoconf-archive" inherit pkgconfig autotools gettext texinfo gtk-doc @@ -19,8 +19,8 @@ SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \ file://0001-idn-format-security-warnings.patch \ " -SRC_URI[md5sum] = "bef634141fe39326cb354b75e891fead" -SRC_URI[sha256sum] = "f11af1005b46b7b15d057d7f107315a1ad46935c7fcdf243c16e46ec14f0fe1e" +SRC_URI[md5sum] = "813c7b268d1051ca02c3610986126f38" +SRC_URI[sha256sum] = "14b67108344d81ba844631640df77c9071d9fb0659b080326ff5424e86b14038" # command tool is under GPLv3+, while libidn itself is under LGPLv2.1+ or LGPLv3 # so package command into a separate package diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.5.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.6.bb index 7527298c2..1e22d3abe 100644 --- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.5.bb +++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.6.bb @@ -25,7 +25,7 @@ SRC_URI = " \ gitsm://github.com/ostreedev/ostree \ file://run-ptest \ " -SRCREV = "63797cb750b4b2a05c5143613d89de9df99df9df" +SRCREV = "5d2183f63ef5ecf0e6e555c3214dd3fc17a8e5a1" UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+)" diff --git a/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb b/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb new file mode 100644 index 000000000..5db38ac98 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb @@ -0,0 +1,22 @@ +# Copyright (c) 2019 Christophe Chapuis <chris.chapuis@gmail.com> +# Copyright (c) 2019 Herman van Hazendonk <github.com@herrie.org> + +SUMMARY = "A very simple convenience library for handling properties and signals in C++11." +SECTION = "libs" +LICENSE = "LGPLv3" +LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" + +PV = "0.0.1+git${SRCPV}" + +SRCREV = "45863e849b39c4921d6553e6d27e267a96ac7d77" +SRC_URI = "git://github.com/lib-cpp/${BPN}.git" + +S = "${WORKDIR}/git" + +do_configure_prepend() { + echo " " > ${S}/tests/CMakeLists.txt +} + +inherit cmake pkgconfig + +RDEPENDS_${PN}-dev = "" diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.0.6.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.0.7.bb index c9846c5c7..791e41e6e 100644 --- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.0.6.bb +++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.0.7.bb @@ -17,8 +17,8 @@ SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \ file://GNU_SOURCE.patch \ " -SRC_URI[md5sum] = "2f65e1f5610d98dd48e10eef49c79b02" -SRC_URI[sha256sum] = "12ad49b163af5ef39466e8d2f7d212a58172116e5b441eebecb4e6ca22363d94" +SRC_URI[md5sum] = "ac57b7188b771bbc08e8d7d6dddb3a80" +SRC_URI[sha256sum] = "c2aaa1a4c7e72c70adedf976fdd5e1d34d395989283dab9d7840e0a304bb2393" inherit autotools-brokensep update-rc.d systemd useradd diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2006.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2006.0.bb index 524cd9ead..b6c2a991f 100644 --- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2006.0.bb +++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2006.0.bb @@ -76,7 +76,7 @@ PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5," PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql," PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi," PACKAGECONFIG[mail] = "--enable-mail,--disable-mail,," -PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind," +PACKAGECONFIG[valgrind] = ",--without-valgrind-testbench,valgrind," do_configure_prepend() { sed -i -e 's|python |python3 |g' ${S}/tests/*.sh @@ -106,12 +106,6 @@ do_install_ptest() { # fix the abs_top_builddir sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile - # valgrind is not compatible with arm and mips, - # so remove related test cases if there is no valgrind. - if [ x${VALGRIND} = x ]; then - sed -i '/udp-msgreduc-/d' ${D}${PTEST_PATH}/${TESTDIR}/Makefile - fi - # install test-driver install -m 644 ${S}/test-driver ${D}${PTEST_PATH} diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.1.bb b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.2.bb index abae36252..6f3685c4b 100644 --- a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.1.bb +++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.2.bb @@ -16,7 +16,7 @@ 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;patchdir=../ \ " -SRCREV = "07ab65afb10c8f8c008880a73b7b7aaedbde0e15" +SRCREV = "01b727adf1ce3c0ed5b95299d60f62bc66d98eb5" S = "${WORKDIR}/git/python" diff --git a/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb b/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb index 3e4ed7c03..9a3a66c2a 100644 --- a/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb +++ b/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb @@ -69,10 +69,10 @@ do_install() { } pkg_postinst_${PN} () { - if [ x"$D" != "x" ]; then - $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX} - fi + $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX} +} +pkg_postinst_ontarget_${PN} () { ${datadir}/sfcb/genSslCert.sh ${sysconfdir}/sfcb ${bindir}/sfcbrepos -f } diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb index 519368817..e3ad04f59 100644 --- a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb +++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb @@ -12,4 +12,8 @@ PV = "2020.02.04" S = "${WORKDIR}/git" -inherit autotools pkgconfig +inherit autotools pkgconfig update-alternatives + +ALTERNATIVE_${PN} = "candump cansend" +ALTERNATIVE_LINK_NAME[candump] = "${bindir}/candump" +ALTERNATIVE_LINK_NAME[cansend] = "${bindir}/cansend" diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb index e1508af85..aaa265348 100644 --- a/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb +++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb @@ -12,9 +12,16 @@ SRC_URI = "git://git.pengutronix.de/git/tools/canutils.git;protocol=git \ file://0001-canutils-candump-Add-error-frame-s-handling.patch \ " +inherit update-alternatives + S = "${WORKDIR}/git" inherit autotools pkgconfig # Busybox ip doesn't support can interface configuration, use the real thing RDEPENDS_${PN} += "iproute2" + +ALTERNATIVE_PRIORITY = "90" +ALTERNATIVE_${PN} = "candump cansend" +ALTERNATIVE_LINK_NAME[candump] = "${bindir}/candump" +ALTERNATIVE_LINK_NAME[cansend] = "${bindir}/cansend" diff --git a/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_3.1b.bb b/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_3.1b.bb index fde0ed4ac..f5078e923 100644 --- a/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_3.1b.bb +++ b/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_3.1b.bb @@ -21,5 +21,5 @@ PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=n do_configure_prepend() { # The 'compat' directory is needed for output during the build but it's # not automatically created when building outside the source directory. - mkdir ${B}/compat + mkdir -p ${B}/compat } diff --git a/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb b/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb index ed19d1e41..8e00cb3ea 100644 --- a/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb +++ b/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb @@ -15,6 +15,8 @@ PR = "r1" S = "${WORKDIR}/tools" +inherit update-alternatives + do_compile() { oe_runmake } @@ -25,3 +27,6 @@ do_install() { FILES_${PN} += "${exec_prefix}${nonarch_base_libdir}" FILES_${PN}-dbg += "${exec_prefix}${nonarch_base_libdir}/uml/.debug" + +ALTERNATIVE_${PN} = "tunctl" +ALTERNATIVE_LINK_NAME[tunctl] = "${bindir}/tunctl" diff --git a/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb b/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb index 29d0f64ac..7ac302821 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb @@ -19,7 +19,10 @@ SRC_URI = "https://www.kraxel.org/releases/fbida/fbida-${PV}.tar.gz \ " SRC_URI[sha256sum] = "95b7c01556cb6ef9819f358b314ddfeb8a4cbe862b521a3ed62f03d163154438" -inherit pkgconfig +inherit pkgconfig features_check + +# Depends on libepoxy +REQUIRED_DISTRO_FEATURES = "opengl" EXTRA_OEMAKE = "STRIP= 'srcdir=${S}' -f ${S}/GNUmakefile" diff --git a/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.19.bb b/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.20.bb index e121ae946..356c78c0d 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.19.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.20.bb @@ -1,10 +1,10 @@ SUMMARY = "Jpeg 2000 implementation" -HOMEPAGE = "https://github.com/mdadams/jasper" +HOMEPAGE = "https://github.com/jasper-software/jasper" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=a80440d1d8f17d041c71c7271d6e06eb" -SRC_URI = "git://github.com/mdadams/jasper.git;protocol=https" -SRCREV = "7d8cfd8ac16d1af9b51e5ccd781e898f0fbf57cc" +SRC_URI = "git://github.com/jasper-software/jasper.git;protocol=https" +SRCREV = "d10a710f31da3d079a984d35ff6cc82a853d25d7" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.79.0.bb b/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.80.0.bb index a6de1f795..a861bba5b 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.79.0.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.80.0.bb @@ -1,13 +1,13 @@ DESCRIPTION = "A pedagogically-oriented open source site containing software that is broadly useful for image processing and image analysis applications" DEPENDS = "jpeg tiff libpng zlib" LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://leptonica-license.txt;md5=34aa579294e8284b7b848c8d5d361e8f" +LIC_FILES_CHKSUM = "file://leptonica-license.txt;md5=809b282cea2df68975fbe0ffe02b560f" UPSTREAM_CHECK_URI = "https://github.com/DanBloomberg/leptonica/releases" SRC_URI = "http://www.leptonica.org/source/leptonica-${PV}.tar.gz" -SRC_URI[md5sum] = "a545654b1dae7d29e2ea346b29095f84" -SRC_URI[sha256sum] = "045966c9c5d60ebded314a9931007a56d9d2f7a6ac39cb5cc077c816f62300d8" +SRC_URI[md5sum] = "d640d684234442a84c9e8902f0b3ff36" +SRC_URI[sha256sum] = "ec9c46c2aefbb960fb6a6b7f800fe39de48343437b6ce08e30a8d9688ed14ba4" EXTRA_OECONF += " \ --without-libwebp \ diff --git a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-15389.patch b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-15389.patch new file mode 100644 index 000000000..f5ce11a27 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-15389.patch @@ -0,0 +1,51 @@ +From e8e258ab049240c2dd1f1051b4e773b21e2d3dc0 Mon Sep 17 00:00:00 2001 +From: Even Rouault <even.rouault@spatialys.com> +Date: Sun, 28 Jun 2020 14:19:59 +0200 +Subject: [PATCH] opj_decompress: fix double-free on input directory with mix + of valid and invalid images (CVE-2020-15389) + +Fixes #1261 + +Credits to @Ruia-ruia for reporting and analysis. +--- + src/bin/jp2/opj_decompress.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- end of original header --- + +CVE: CVE-2020-15389 + +Upstream-Status: Backport [git://github.com/uclouvain/openjpeg.git] + +Signed-off-by: Joe Slater <joe.slater@windriver.com> + +--- +diff --git a/src/bin/jp2/opj_decompress.c b/src/bin/jp2/opj_decompress.c +index 7eeb0952..2634907f 100644 +--- a/src/bin/jp2/opj_decompress.c ++++ b/src/bin/jp2/opj_decompress.c +@@ -1316,10 +1316,6 @@ static opj_image_t* upsample_image_components(opj_image_t* original) + int main(int argc, char **argv) + { + opj_decompress_parameters parameters; /* decompression parameters */ +- opj_image_t* image = NULL; +- opj_stream_t *l_stream = NULL; /* Stream */ +- opj_codec_t* l_codec = NULL; /* Handle to a decompressor */ +- opj_codestream_index_t* cstr_index = NULL; + + OPJ_INT32 num_images, imageno; + img_fol_t img_fol; +@@ -1393,6 +1389,10 @@ int main(int argc, char **argv) + + /*Decoding image one by one*/ + for (imageno = 0; imageno < num_images ; imageno++) { ++ opj_image_t* image = NULL; ++ opj_stream_t *l_stream = NULL; /* Stream */ ++ opj_codec_t* l_codec = NULL; /* Handle to a decompressor */ ++ opj_codestream_index_t* cstr_index = NULL; + + if (!parameters.quiet) { + fprintf(stderr, "\n"); +-- +2.17.1 + diff --git a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb index 42011efa9..a0740a274 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb @@ -10,6 +10,7 @@ SRC_URI = " \ file://0002-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch \ file://CVE-2020-6851.patch \ file://CVE-2020-8112.patch \ + file://CVE-2020-15389.patch \ " SRCREV = "57096325457f96d8cd07bd3af04fe81d7a2ba788" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb new file mode 100644 index 000000000..906179501 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb @@ -0,0 +1,25 @@ +SECTION = "shadow" +LICENSE = "MIT-X" +LIC_FILES_CHKSUM = "file://LICENSE;md5=04c3ca13a702147c62db90f556c5b3ca" +SRC_URI = "http://dl.suckless.org/${BPN}/${BP}.tar.gz" + +inherit pkgconfig features_check + +REQUIRED_DISTRO_FEATURES = "x11" + +SRC_URI[sha256sum] = "d42d3ceceb4d6a65e32e90a5336e3d446db612c3fbd9ebc1780bc6c9a03346a6" + +DEPENDS += "libx11 libxft fontconfig ncurses-native" + +RDEPENDS_${PN} += "libx11-locale" + +do_compile() { + make INCS='-I. `pkg-config --cflags x11 fontconfig xft`' LIBS='-lm -lutil `pkg-config --libs x11 fontconfig xft`' +} +do_install() { + make install DESTDIR=${D} PREFIX=/usr TERMINFO=${D}${datadir}/terminfo +} + +FILES_${PN} += " \ + ${datadir}/terminfo \ +" diff --git a/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract/0001-include-sys-time.h.patch b/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract/0001-include-sys-time.h.patch new file mode 100644 index 000000000..de1fa75b7 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract/0001-include-sys-time.h.patch @@ -0,0 +1,34 @@ +From b47fa9532a7090d76521603dbc818bdec100085f Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 15 Sep 2020 17:04:27 -0700 +Subject: [PATCH] include sys/time.h + +This provides missing definitions of timeval stuct + +Fixes +| ../../../git/src/ccutil/ocrclass.h:154:7: error: member access into +incomplete type 'struct timeval' +| tv->tv_usec = (millisecs.count() % 1000) * 1000; + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/ccutil/ocrclass.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/ccutil/ocrclass.h b/src/ccutil/ocrclass.h +index d39a6dd6..96395c9b 100644 +--- a/src/ccutil/ocrclass.h ++++ b/src/ccutil/ocrclass.h +@@ -28,6 +28,8 @@ + + #include <chrono> + #include <ctime> ++#include <sys/time.h> ++ + #ifdef _WIN32 + #include <winsock2.h> // for timeval + #endif +-- +2.28.0 + diff --git a/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_git.bb b/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_4.1.1.bb index 89d09a0f5..3b5032f06 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_git.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_4.1.1.bb @@ -1,19 +1,22 @@ SUMMARY = "A commercial quality OCR engine " +HOMEPAGE = "https://github.com/tesseract-ocr/tesseract" +BUGTRACKER = "https://github.com/tesseract-ocr/tesseract/issues" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://COPYING;md5=7ea4f9a43aba9d3c849fe5c203a0ed40" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +BRANCH = "4.1" +SRCREV = "f4ef2f2050f4c25b28bdbf0063b7d2eb30f41cf7" +SRC_URI = "git://github.com/${BPN}-ocr/${BPN}.git;branch=${BRANCH} \ + file://0001-include-sys-time.h.patch \ + " -BRANCH = "3.05" -PV = "${BRANCH}.01+git${SRCPV}" -SRCREV = "215866151e774972c9502282111b998d7a053562" -SRC_URI = "git://github.com/${BPN}-ocr/${BPN}.git;branch=${BRANCH}" S = "${WORKDIR}/git" DEPENDS = "leptonica" EXTRA_OECONF += "LIBLEPT_HEADERSDIR=${STAGING_INCDIR}/leptonica" - inherit autotools pkgconfig FILES_${PN} += "${datadir}/tessdata" diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-code-pro-fonts/44-source-code-pro-fonts-fontconfig.conf b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-code-pro-fonts/44-source-code-pro-fonts-fontconfig.conf new file mode 100644 index 000000000..badb1b011 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-code-pro-fonts/44-source-code-pro-fonts-fontconfig.conf @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>monospace</family> + <prefer> + <family>Source Code Pro</family> + </prefer> + </alias> + <alias> + <family>Source Code Pro</family> + <default> + <family>monospace</family> + </default> + </alias> +</fontconfig> + diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-code-pro-fonts_2.030_1.050.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-code-pro-fonts_2.030_1.050.bb new file mode 100644 index 000000000..5d10195f7 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-code-pro-fonts_2.030_1.050.bb @@ -0,0 +1,29 @@ +require ttf.inc + +SUMMARY = "Adobe Source Code Pro" +HOMEPAGE = "https://github.com/adobe-fonts/source-code-pro" +LICENSE = "OFL-1.1" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c7c16bdc2c96af797293d68503e5c65c" + +inherit allarch fontcache + +SRC_URI = " \ + https://github.com/adobe-fonts/source-code-pro/releases/download/2.030R-ro/1.050R-it/source-code-pro-2.030R-ro-1.050R-it.zip \ + file://44-source-code-pro-fonts-fontconfig.conf \ +" +SRC_URI[sha256sum] = "da2ac159497d31b0c6d9daa8fc390fb8252e75b4a9805ace6a2c9cccaed4932e" +S = "${WORKDIR}/source-code-pro-2.030R-ro-1.050R-it" + +do_install() { + install -d ${D}${sysconfdir}/fonts/conf.d/ + install -m 0644 ${WORKDIR}/44-source-code-pro-fonts-fontconfig.conf ${D}${sysconfdir}/fonts/conf.d/ + + install -d ${D}${datadir}/fonts/truetype/ + find ./ -name '*.otf' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \; +} + +FILES_${PN} = " \ + ${sysconfdir}/fonts \ + ${datadir}/fonts \ +" + diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb index 5b406bc65..57efea86a 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb @@ -24,6 +24,8 @@ do_install_append () { install -m 0644 LiberationSansNarrow*.ttf ${D}${datadir}/fonts/TTF/ install -D -m 0644 ${WORKDIR}/30-0-liberation-sans-narrow.conf ${D}${sysconfdir}/conf.avail/30-${PN}-sans.conf install -D -m 0644 ${S}/License.txt ${D}${datadir}/licenses/${PN}/LICENSE + # normal liberation fonts come from ttf-liberation recipe so delete here + rm -rf ${D}${datadir}/fonts/truetype } PACKAGES = "${PN}" diff --git a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc index 4a297c313..e64a935dd 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc +++ b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/khronos-cts.inc @@ -2,7 +2,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" SRC_URI = "\ - git://github.com/KhronosGroup/VK-GL-CTS.git;protocol=https;tag=${BPN}-${PV};name=vk-gl-cts \ + git://github.com/KhronosGroup/VK-GL-CTS.git;protocol=https;name=vk-gl-cts;nobranch=1 \ git://github.com/google/amber;protocol=https;destsuffix=git/external/amber/src;name=amber;branch=main \ git://github.com/KhronosGroup/glslang.git;protocol=https;destsuffix=git/external/glslang/src;name=glslang \ git://github.com/KhronosGroup/SPIRV-Headers.git;protocol=https;destsuffix=git/external/spirv-headers/src;name=spirv-headers \ @@ -12,7 +12,7 @@ SRC_URI = "\ S = "${WORKDIR}/git" -SRCREV_FORMAT = "vk-gl-cts" +SRCREV_FORMAT = "vk-gl-cts_amber_glslang_spirv-headers_spirv-tools" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/opengl-es-cts_3.2.6.1.bb b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/opengl-es-cts_3.2.6.1.bb index 0e50fd947..5e0076b20 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/opengl-es-cts_3.2.6.1.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/opengl-es-cts_3.2.6.1.bb @@ -1,7 +1,8 @@ DESCRIPTION = "OpenGL CTS" require khronos-cts.inc - +# opengl-es-cts-3.2.6.1 +SRCREV_vk-gl-cts = "7e023f81b4fff54b558882fe739d7c959d0a02a8" SRCREV_amber = "d26ee22dd7faab1845a531d410f7ec1db407402a" SRCREV_glslang = "c538b5d796fb24dd418fdd650c7f76e56bcc3dd8" SRCREV_spirv-headers = "e4322e3be589e1ddd44afb20ea842a977c1319b8" diff --git a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.2.3.0.bb b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.2.3.2.bb index 77064d4ed..f07b12dec 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.2.3.0.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/vulkan-cts_1.2.3.2.bb @@ -1,7 +1,8 @@ DESCRIPTION = "Vulkan CTS" require khronos-cts.inc - +# vulkan-cts-1.2.3.2 +SRCREV_vk-gl-cts = "5cd2240b60825fbbf6bd9ddda6af176ee3100c70" SRCREV_amber = "a40bef4dba98d2d80b48e5a940d8574fbfceb197" SRCREV_glslang = "b5f003d7a3ece37db45578a8a3140b370036fc64" SRCREV_spirv-headers = "f8bf11a0253a32375c32cad92c841237b96696c0" diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb index 6cad97f15..9131c754d 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb +++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb @@ -1,5 +1,5 @@ SUMMARY = "X screen saver and locker" - +HOMEPAGE = "https://www.jwz.org/xscreensaver/" LICENSE = "BSD-0-Clause" LIC_FILES_CHKSUM = "file://driver/xscreensaver.h;endline=10;md5=2b97002f72fbfc9329b4336e798f2463" 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 3687c267e..2b5ebcc27 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 @@ -20,15 +20,16 @@ SRC_URI += "file://run-ptest \ # if you have older kernel than that you need to remove it from PACKAGECONFIG PACKAGECONFIG ??= "bpf firmware vm" PACKAGECONFIG_remove_x86 = "bpf" -PACKAGECONFIG_remove_arm = "bpf" +PACKAGECONFIG_remove_arm = "bpf vm" # host ptrace.h is used to compile BPF target but mips ptrace.h is needed # progs/loop1.c:21:9: error: incomplete definition of type 'struct user_pt_regs' # m = PT_REGS_RC(ctx); -PACKAGECONFIG_remove_qemumips = "bpf" +# vm tests need libhugetlbfs starting 5.8+ (https://lkml.org/lkml/2020/4/22/1654) +PACKAGECONFIG_remove_qemumips = "bpf vm" PACKAGECONFIG[bpf] = ",,elfutils libcap libcap-ng rsync-native," PACKAGECONFIG[firmware] = ",,libcap, bash" -PACKAGECONFIG[vm] = ",,libcap,libgcc bash" +PACKAGECONFIG[vm] = ",,libcap libhugetlbfs,libgcc bash" do_patch[depends] += "virtual/kernel:do_shared_workdir" @@ -49,10 +50,13 @@ EXTRA_OEMAKE = '\ AR="${AR}" \ LD="${LD}" \ DESTDIR="${D}" \ + MACHINE="${ARCH}" \ ' KERNEL_SELFTEST_SRC ?= "Makefile \ include \ + kernel \ + lib \ tools \ scripts \ arch \ diff --git a/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.1.bb b/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.2.bb index c6914007d..f59e6d1f7 100644 --- a/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.1.bb +++ b/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.2.bb @@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b5262b4a1a1bff72b48e935531976d2e" inherit autotools update-alternatives SRC_URI = "http://gondor.apana.org.au/~herbert/${BPN}/files/${BP}.tar.gz" -SRC_URI[md5sum] = "df978fd0324f60a6ff45f686fe269fdc" -SRC_URI[sha256sum] = "73c881f146e329ac54962766760fd62cb8bdff376cd6c2f5772eecc1570e1611" +SRC_URI[md5sum] = "b9b71c72e40fdc4db9b4ffb81fc3bebc" +SRC_URI[sha256sum] = "00fb7d68b7599cc41ab151051c06c01e9500540183d8aa72116cb9c742bd6d5f" EXTRA_OECONF += "--bindir=${base_bindir}" diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.16.1.bb b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.18.0.bb index f381d12fb..7709075fe 100644 --- a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.16.1.bb +++ b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.18.0.bb @@ -17,11 +17,13 @@ ALLOW_EMPTY_${PN} = "1" LIC_FILES_CHKSUM = "file://COPYING;md5=de86c8210a433f72bd3cc98e797a6084" -SRC_URI[md5sum] = "569f4b082c652ae8a8ad94fb470016f9" -SRC_URI[sha256sum] = "e271db76dbbcda9835ed1c9c94deb2ba3f4589c3ebcaa71d99ac694b8d62638c" +SRC_URI[md5sum] = "ed1f2dc4cf24aa2da8361179ade01682" +SRC_URI[sha256sum] = "9d539e7c09aa6394d512c433c5601c1f26dc4975f022ad7d5e8e57c3b635b370" SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2" PACKAGECONFIG ??= "boost" -PACKAGECONFIG[boost] = "--with-boost,--without-boost,boost" +PACKAGECONFIG[boost] = "--with-boost=${STAGING_LIBDIR},--without-boost,boost" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb b/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb new file mode 100644 index 000000000..90bd560c4 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb @@ -0,0 +1,29 @@ +SUMMARY = "copy-paste for the Linux console" +DESCRIPTION = "Consolation is a daemon that provides copy-paste and scrolling \ +support to the Linux console. It is based on the libinput library and \ +supports all pointer devices and settings provided by this library. Similar \ +software include gpm and jamd." +HOMEPAGE = "https://salsa.debian.org/consolation-team/consolation" +SECTION = "console/utils" +LICENSE = "GPL-2.0+" +LIC_FILES_CHKSUM = "file://LICENSE;md5=73ca626e1d9048abfc7d599370650827" + +DEPENDS = " \ + libevdev \ + libinput \ + udev \ +" + +SRC_URI = "git://salsa.debian.org/consolation-team/consolation.git" +SRCREV = "4581eaece6e49fa2b687efbdbe23b2de452e7902" + +S = "${WORKDIR}/git" + +inherit autotools pkgconfig systemd + +do_install_append() { + install -d ${D}${systemd_system_unitdir} + install -m 644 ${B}/consolation.service ${D}${systemd_system_unitdir} +} + +SYSTEMD_SERVICE_${PN} = "consolation.service" diff --git a/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.1.bb b/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.1.bb new file mode 100644 index 000000000..9b3adcf9d --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.1.bb @@ -0,0 +1,261 @@ +SUMMARY = "Emacs is the extensible, customizable, self-documenting real-time display editor" +HOMEPAGE = "https://www.gnu.org/software/emacs/" + +LICENSE = "GPLv3" +LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464" + +SRC_URI = "https://ftp.gnu.org/pub/gnu/emacs/emacs-${PV}.tar.xz" + +SRC_URI_append_class-target = " file://usemake-docfile-native.patch" + +SRC_URI[sha256sum] = "4a4c128f915fc937d61edfc273c98106711b540c9be3cd5d2e2b9b5b2f172e41" + +PACKAGECONFIG[gnutls] = "--with-gnutls=yes,--with-gnutls=no,gnutls" +PACKAGECONFIG[kerberos] = "--with-kerberos=yes,--with-kerberos=no,krb5" +PACKAGECONFIG[libgmp] = "--with-libgmp=yes,--with-libgmp=no,gmp" + +PACKAGECONFIG ??= "gnutls kerberos libgmp" + +# We could use --without-all but its better to +# split it into several packages (size of minimal doesnt change) +EXTRA_OECONF = " --with-x=no --with-dumping=none" + +DEPENDS = "ncurses" +DEPENDS_append_class-target = " emacs-native" + +inherit autotools mime-xdg + + +do_compile_class-native (){ + cd ${B}/lib-src + oe_runmake make-docfile + oe_runmake make-fingerprint +} +do_install_class-native(){ + install -d ${D}${bindir} + install -m 755 ${B}/lib-src/make-docfile ${D}/${bindir}/ + install -m 755 ${B}/lib-src/make-fingerprint ${D}/${bindir}/ +} + + +do_install_append(){ + # Delete systemd stuff, extend using DISTRO_FEATURES? + rm -rf ${D}/${libdir} + # Extra stuff which isnt needed + rm -rf ${D}/${datadir}/metainfo + rm -rf ${D}/${datadir}/info + # Emacs copies files to ${D} while building, which were unpacked + # by a different user, we need to restore those + chown -R root:root ${D}${datadir} +} + + +# Use a similar strategy to how we build python: +# Create three packages +# minimal - A working lisp based text editor +# base - What would probably work for most +# full - A fully working emacs +# The lists of files are long but are worth it +# Installing "emacs" installs the base package +PACKAGE_BEFORE_PN = "${PN}-minimal ${PN}-base ${PN}-full" +RPROVIDES_${PN}-base = "${PN}" +RDEPENDS_${PN}-base_class-target = "${PN}-minimal" +RDEPENDS_${PN}-full_class-target = "${PN}" + + +# A minimal version of emacs that works +FILES_${PN}-minimal = " \ + ${datadir}/${BPN}/${PV}/lisp/loadup.el \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/byte-run.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/backquote.elc \ + ${datadir}/${BPN}/${PV}/lisp/subr.elc \ + ${datadir}/${BPN}/${PV}/lisp/version.elc \ + ${datadir}/${BPN}/${PV}/lisp/widget.elc \ + ${datadir}/${BPN}/${PV}/lisp/custom.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/map-ynp.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/mule.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/mule-conf.elc \ + ${datadir}/${BPN}/${PV}/lisp/env.elc \ + ${datadir}/${BPN}/${PV}/lisp/format.elc \ + ${datadir}/${BPN}/${PV}/lisp/bindings.elc \ + ${datadir}/${BPN}/${PV}/lisp/window.elc \ + ${datadir}/${BPN}/${PV}/lisp/files.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/macroexp.elc \ + ${datadir}/${BPN}/${PV}/lisp/cus-face.elc \ + ${datadir}/${BPN}/${PV}/lisp/faces.elc \ + ${datadir}/${BPN}/${PV}/lisp/button.elc \ + ${datadir}/${BPN}/${PV}/lisp/loaddefs.el \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/nadvice.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-preloaded.elc \ + ${datadir}/${BPN}/${PV}/lisp/obarray.elc \ + ${datadir}/${BPN}/${PV}/lisp/abbrev.elc \ + ${datadir}/${BPN}/${PV}/lisp/simple.elc \ + ${datadir}/${BPN}/${PV}/lisp/jka-cmpr-hook.elc \ + ${datadir}/${BPN}/${PV}/lisp/epa-hook.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/mule-cmds.elc \ + ${datadir}/${BPN}/${PV}/lisp/case-table.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/charprop.el \ + ${datadir}/${BPN}/${PV}/lisp/international/characters.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/charscript.elc \ + ${datadir}/${BPN}/${PV}/lisp/composite.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/chinese.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/cyrillic.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/indian.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/sinhala.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/english.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/ethiopic.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/european.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/czech.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/slovak.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/romanian.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/greek.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/hebrew.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/cp51932.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/eucjp-ms.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/japanese.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/korean.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/lao.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/tai-viet.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/thai.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/tibetan.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/vietnamese.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/misc-lang.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/utf-8-lang.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/georgian.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/khmer.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/burmese.elc \ + ${datadir}/${BPN}/${PV}/lisp/language/cham.elc \ + ${datadir}/${BPN}/${PV}/lisp/indent.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-generic.elc \ + ${datadir}/${BPN}/${PV}/lisp/minibuffer.elc \ + ${datadir}/${BPN}/${PV}/lisp/frame.elc \ + ${datadir}/${BPN}/${PV}/lisp/startup.elc \ + ${datadir}/${BPN}/${PV}/lisp/term/tty-colors.elc \ + ${datadir}/${BPN}/${PV}/lisp/font-core.elc \ + ${datadir}/${BPN}/${PV}/lisp/facemenu.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/syntax.elc \ + ${datadir}/${BPN}/${PV}/lisp/font-lock.elc \ + ${datadir}/${BPN}/${PV}/lisp/jit-lock.elc \ + ${datadir}/${BPN}/${PV}/lisp/mouse.elc \ + ${datadir}/${BPN}/${PV}/lisp/select.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/timer.elc \ + ${datadir}/${BPN}/${PV}/lisp/isearch.elc \ + ${datadir}/${BPN}/${PV}/lisp/rfn-eshadow.elc \ + ${datadir}/${BPN}/${PV}/lisp/menu-bar.elc \ + ${datadir}/${BPN}/${PV}/lisp/tab-bar.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/lisp.elc \ + ${datadir}/${BPN}/${PV}/lisp/textmodes/page.elc \ + ${datadir}/${BPN}/${PV}/lisp/register.elc \ + ${datadir}/${BPN}/${PV}/lisp/textmodes/paragraphs.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/prog-mode.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/lisp-mode.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/elisp-mode.elc \ + ${datadir}/${BPN}/${PV}/lisp/textmodes/text-mode.elc \ + ${datadir}/${BPN}/${PV}/lisp/textmodes/fill.elc \ + ${datadir}/${BPN}/${PV}/lisp/newcomment.elc \ + ${datadir}/${BPN}/${PV}/lisp/replace.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/tabulated-list.elc \ + ${datadir}/${BPN}/${PV}/lisp/buff-menu.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/float-sup.elc \ + ${datadir}/${BPN}/${PV}/lisp/vc/vc-hooks.elc \ + ${datadir}/${BPN}/${PV}/lisp/vc/ediff-hook.elc \ + ${datadir}/${BPN}/${PV}/lisp/uniquify.elc \ + ${datadir}/${BPN}/${PV}/lisp/electric.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/eldoc.elc \ + ${datadir}/${BPN}/${PV}/lisp/cus-start.elc \ + ${datadir}/${BPN}/${PV}/lisp/tooltip.elc \ + ${datadir}/${BPN}/${PV}/lisp/simple.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/regexp-opt.elc \ + ${datadir}/${BPN}/${PV}/lisp/term/xterm.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/bytecomp.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cconv.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/gv.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/byte-opt.elc \ + ${datadir}/${BPN}/${PV}/lisp/image.elc \ + ${datadir}/${BPN}/${PV}/lisp/ldefs-boot.el \ + ${datadir}/${BPN}/${PV}/lisp/help.elc \ + ${datadir}/${BPN}/${PV}/lisp/international/uni*.el \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/vc/warnings.elc \ + ${datadir}/${BPN}/${PV}/etc/charsets/ \ + ${bindir}/emacs* \ + ${prefix}/libexec \ +" + + +# What works for "most" is relative, but this can be easily extended if needed +FILES_${PN}-base = " \ + ${datadir}/${BPN}/${PV}/etc/srecode \ + ${datadir}/${BPN}/${PV}/etc/e \ + ${datadir}/${BPN}/${PV}/etc/forms \ + ${datadir}/${BPN}/${PV}/lisp/cedet \ + ${datadir}/${BPN}/${PV}/site-lisp/ \ + ${datadir}/${BPN}/${PV}/lisp/subdirs.el \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-mode.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-defs.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-vars.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-engine.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-styles.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-fonts.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-cmds.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-align.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-menus.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-guess.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-lib.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-macs.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/pcase.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/inline.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-seq.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/easymenu.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/python* \ + ${datadir}/${BPN}/${PV}/lisp/ansi-color.elc \ + ${datadir}/${BPN}/${PV}/lisp/comint.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/ring.elc \ + ${datadir}/${BPN}/${PV}/lisp/json.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/map.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/seq.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/subr-x.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/seq.elc \ + ${datadir}/${BPN}/${PV}/lisp/net/tramp-sh.elc \ + ${datadir}/${BPN}/${PV}/lisp/net/tramp.elc \ + ${datadir}/${BPN}/${PV}/lisp/net/tramp-compat.elc \ + ${datadir}/${BPN}/${PV}/lisp/auth-source.elc \ + ${datadir}/${BPN}/${PV}/lisp/password-cache.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/eieio.elc \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/eieio-core.elc \ + ${datadir}/${BPN}/${PV}/lisp/format-spec.elc \ + ${datadir}/${BPN}/${PV}/lisp/ls-lisp.elc \ + ${datadir}/${BPN}/${PV}/lisp/calendar/parse-time.elc \ + ${datadir}/${BPN}/${PV}/lisp/calendar/iso8601.elc \ + ${datadir}/${BPN}/${PV}/lisp/calendar/time-date.elc \ + ${datadir}/${BPN}/${PV}/lisp/shell.elc \ + ${datadir}/${BPN}/${PV}/lisp/pcomplete.elc \ + ${datadir}/${BPN}/${PV}/lisp/net/tramp-integration.elc \ + ${datadir}/${BPN}/${PV}/lisp/files-x.elc \ + ${datadir}/${BPN}/${PV}/lisp/net/trampver.elc \ + ${datadir}/${BPN}/${PV}/lisp/net/tramp-loaddefs.el \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/*perl* \ + ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/smie.elc \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/*asm* \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/cpp* \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/make* \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/sh-script* \ + ${datadir}/${BPN}/${PV}/etc/themes/adwaita-theme.el \ + ${datadir}/${BPN}/${PV}/etc/themes/wheatgrass-theme.el \ + ${datadir}/${BPN}/${PV}/etc/themes/deeper-blue-theme.el \ + ${datadir}/${BPN}/${PV}/etc/themes/light-blue-theme.el \ + ${datadir}/${BPN}/${PV}/etc/themes/misterioso-theme.el \ + ${datadir}/${BPN}/${PV}/etc/themes/tango-theme.el \ + ${datadir}/${BPN}/${PV}/etc/themes/wombat-theme.el \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/prog* \ + ${datadir}/${BPN}/${PV}/lisp/progmodes/executable* \ +" + +# Restore FILES for the full package to catch everything left +FILES_${PN}-full = "${FILES_${PN}}" +FILES_${PN}-full_append = " ${datadir}/icons" + + +# The following does NOT build a native emacs. +# It only builds some parts of it that are +# required to by the build for target emacs. +BBCLASSEXTEND = "native" diff --git a/meta-openembedded/meta-oe/recipes-support/emacs/files/usemake-docfile-native.patch b/meta-openembedded/meta-oe/recipes-support/emacs/files/usemake-docfile-native.patch new file mode 100644 index 000000000..cc0b05c79 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/emacs/files/usemake-docfile-native.patch @@ -0,0 +1,85 @@ +Upstream-Status: Inappropriate [OE-Specific] + +When building emacs, it builds some tools for the HOST +that are then used to build for target, such as +make-fingerprint and make-docfile, this needs to be +adapted to be used by bitbake, otherwise the compiled +executables arent compatible with the HOST. + +Use the above mentioned tools provided by the native +version of the recipe instead. + +Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandro@enedino.org> + +Index: emacs-27.1/src/Makefile.in +=================================================================== +--- emacs-27.1.orig/src/Makefile.in ++++ emacs-27.1/src/Makefile.in +@@ -472,7 +472,7 @@ ifeq ($(CHECK_STRUCTS),true) + pdumper.o: dmpstruct.h + endif + dmpstruct.h: $(srcdir)/dmpstruct.awk +-dmpstruct.h: $(libsrc)/make-fingerprint$(EXEEXT) $(dmpstruct_headers) ++dmpstruct.h: $(dmpstruct_headers) + $(AM_V_GEN)POSIXLY_CORRECT=1 awk -f $(srcdir)/dmpstruct.awk \ + $(dmpstruct_headers) > $@ + +@@ -566,8 +566,7 @@ ${lispintdir}/characters.elc: ${charscri + ## Strictly speaking, emacs does not depend directly on all of $lisp, + ## since not all pieces are used on all platforms. But DOC depends + ## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here. +-emacs$(EXEEXT): temacs$(EXEEXT) \ +- lisp.mk $(etc)/DOC $(lisp) \ ++emacs$(EXEEXT): lisp.mk $(etc)/DOC $(lisp) \ + $(lispsource)/international/charprop.el ${charsets} + ifeq ($(DUMPING),unexec) + LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup --temacs=dump +@@ -596,15 +595,15 @@ endif + ## for the first time, this prevents any variation between configurations + ## in the contents of the DOC file. + ## +-$(etc)/DOC: lisp.mk $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp) ++$(etc)/DOC: lisp.mk $(obj) $(lisp) + $(AM_V_GEN)$(MKDIR_P) $(etc) + $(AM_V_at)rm -f $(etc)/DOC +- $(AM_V_at)$(libsrc)/make-docfile -d $(srcdir) \ ++ make-docfile -d $(srcdir) \ + $(SOME_MACHINE_OBJECTS) $(obj) > $(etc)/DOC +- $(AM_V_at)$(libsrc)/make-docfile -a $(etc)/DOC -d $(lispsource) \ ++ make-docfile -a $(etc)/DOC -d $(lispsource) \ + $(shortlisp) + +-$(libsrc)/make-docfile$(EXEEXT) $(libsrc)/make-fingerprint$(EXEEXT): \ ++$(libsrc)/make-fingerprint$(EXEEXT): \ + $(lib)/libgnu.a + $(MAKE) -C $(dir $@) $(notdir $@) + +@@ -622,8 +621,8 @@ am__v_GLOBALS_ = $(am__v_GLOBALS_@AM_DEF + am__v_GLOBALS_0 = @echo " GEN " globals.h; + am__v_GLOBALS_1 = + +-gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES) +- $(AM_V_GLOBALS)$(libsrc)/make-docfile -d $(srcdir) -g $(obj) > globals.tmp ++gl-stamp: $(GLOBAL_SOURCES) ++ make-docfile -d $(srcdir) -g $(obj) > globals.tmp + $(AM_V_at)$(top_srcdir)/build-aux/move-if-change globals.tmp globals.h + $(AM_V_at)echo timestamp > $@ + +@@ -637,7 +636,7 @@ $(LIBEGNU_ARCHIVE): $(config_h) + $(MAKE) -C $(dir $@) all + + ifeq ($(HAVE_PDUMPER),yes) +- MAKE_PDUMPER_FINGERPRINT = $(libsrc)/make-fingerprint$(EXEEXT) ++ MAKE_PDUMPER_FINGERPRINT = make-fingerprint + else + MAKE_PDUMPER_FINGERPRINT = + endif +@@ -647,7 +646,7 @@ endif + ## This goes on to affect various things, and the emacs binary fails + ## to start if Vinstallation_directory has the wrong value. + temacs$(EXEEXT): $(LIBXMENU) $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(EMACSRES) \ +- $(charsets) $(charscript) $(MAKE_PDUMPER_FINGERPRINT) ++ $(charsets) $(charscript) + $(AM_V_CCLD)$(CC) -o $@.tmp \ + $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \ + $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(W32_RES_LINK) $(LIBES) diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.2.0.bb b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.2.0.bb index 6a97c24c2..d446a31a5 100644 --- a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.2.0.bb +++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.2.0.bb @@ -38,7 +38,7 @@ PACKAGECONFIG ??= " \ X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile" PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF,${X11_DEPS}" -PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native" +PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native libxkbcommon" PACKAGECONFIG[directfb] = "-DWITH_DIRECTFB=ON,-DWITH_DIRECTFB=OFF,directfb" PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam" PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio" diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.90.bb b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.8.bb index b7b783931..662777b47 100644 --- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.90.bb +++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.8.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/gperftools/gperftools" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://COPYING;md5=762732742c73dc6c7fbe8632f06c059a" -SRCREV = "db7aa547abb5abdd558587a15502584cbc825438" +SRCREV = "180bfa10d7cb38e8b3784d60943d50e8fcef0dcb" SRC_URI = "git://github.com/gperftools/gperftools \ file://0001-Support-Atomic-ops-on-clang.patch \ file://0001-fix-build-with-musl-libc.patch \ diff --git a/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.105.bb b/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.106.bb index 70807de2a..0249d09e4 100644 --- a/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.105.bb +++ b/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.106.bb @@ -7,8 +7,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4f40a941379143186f9602242c3fb729 \ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}2/${BPN}_${PV}.zip \ " -SRC_URI[md5sum] = "ce91e46d3abc1d720566b13298fbc367" -SRC_URI[sha256sum] = "aa20c535cf08f1576bebad97cc6159ca57c68bc43acfc9a296e4e9faf041097e" +SRC_URI[md5sum] = "0925d25bc455047b01d4fe9814d30173" +SRC_URI[sha256sum] = "4e74838baf5437e95ae17aa3efb48bd0621f483bff4424f6255fcf327ff80765" inherit autotools diff --git a/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch b/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch deleted file mode 100644 index 6153bdedb..000000000 --- a/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 08aca4816cc798fce58b6235c26585a0063fa8af Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 26 Nov 2019 10:43:49 -0800 -Subject: [PATCH] Ask for python3 specifically - -python2 is on its way out - -Upstream-Status: Submitted [https://github.com/hishamhm/htop/pull/968] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - scripts/MakeHeader.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py -index 7c48fdd..7a7586d 100755 ---- a/scripts/MakeHeader.py -+++ b/scripts/MakeHeader.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - import os, sys, string, io - try: - from StringIO import StringIO --- -2.24.0 - diff --git a/meta-openembedded/meta-oe/recipes-support/htop/files/htop-gcc10.patch b/meta-openembedded/meta-oe/recipes-support/htop/files/htop-gcc10.patch deleted file mode 100644 index 5be06277d..000000000 --- a/meta-openembedded/meta-oe/recipes-support/htop/files/htop-gcc10.patch +++ /dev/null @@ -1,31 +0,0 @@ -Fix build with -fno-common - -Upstream-Staus: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- a/CRT.h -+++ b/CRT.h -@@ -140,7 +140,7 @@ extern const char **CRT_treeStr; - - extern int CRT_delay; - --int* CRT_colors; -+extern int* CRT_colors; - - extern int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT]; - -@@ -150,13 +150,13 @@ extern int CRT_scrollHAmount; - - extern int CRT_scrollWheelVAmount; - --char* CRT_termType; -+extern char* CRT_termType; - - // TODO move color scheme to Settings, perhaps? - - extern int CRT_colorScheme; - --void *backtraceArray[128]; -+extern void *backtraceArray[128]; - - #if HAVE_SETUID_ENABLED - diff --git a/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb b/meta-openembedded/meta-oe/recipes-support/htop/htop_3.0.1.bb index c608077de..d677e36c0 100644 --- a/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb +++ b/meta-openembedded/meta-oe/recipes-support/htop/htop_3.0.1.bb @@ -1,28 +1,25 @@ SUMMARY = "Interactive process viewer" -HOMEPAGE = "http://hisham.hm/htop" +HOMEPAGE = "https://htop.dev" SECTION = "console/utils" LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=c312653532e8e669f30e5ec8bdc23be3" +LIC_FILES_CHKSUM = "file://COPYING;md5=4099d367cd5e59b6d4fc1ee33accb891" DEPENDS = "ncurses" -SRC_URI = "http://hisham.hm/htop/releases/${PV}/${BP}.tar.gz \ +SRC_URI = "git://github.com/htop-dev/htop.git \ file://0001-Use-pkg-config.patch \ - file://0001-Ask-for-python3-specifically.patch \ - file://htop-gcc10.patch \ " -SRC_URI[md5sum] = "0d816b6beed31edc75babcfbf863ffa8" -SRC_URI[sha256sum] = "d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57" +SRCREV = "dace850fa6e27b5626115b366059258cfe4d60c9" + +S = "${WORKDIR}/git" inherit autotools pkgconfig -PACKAGECONFIG ??= "proc \ - cgroup \ +PACKAGECONFIG ??= "cgroup \ taskstats \ unicode \ linux-affinity \ delayacct" -PACKAGECONFIG[proc] = "--enable-proc,--disable-proc" PACKAGECONFIG[openvz] = "--enable-openvz,--disable-openvz" PACKAGECONFIG[cgroup] = "--enable-cgroup,--disable-cgroup" PACKAGECONFIG[vserver] = "--enable-vserver,--disable-vserver" @@ -32,7 +29,3 @@ PACKAGECONFIG[linux-affinity] = "--enable-linux-affinity,--disable-linux-affinit PACKAGECONFIG[hwloc] = "--enable-hwloc,--disable-hwloc,hwloc" PACKAGECONFIG[setuid] = "--enable-setuid,--disable-setuid" PACKAGECONFIG[delayacct] = "--enable-delayacct,--disable-delayacct,libnl" - -do_configure_prepend () { - rm -rf ${S}/config.h -} 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 035a11c89..42b92106b 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 @@ SECTION = "System/Base" LICENSE = "GPL-2.0+" LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57" -PV = "0.336" -SRCREV = "e0e15bc7930f6d7befa4e7060fd03cc4935f6190" +PV = "0.339" +SRCREV = "1cd8ee29eb2dcb954961be008b96cfbf982f0700" SRC_URI = "git://github.com/vcrhonek/${BPN}.git" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb index 804faf02e..70cb237d9 100644 --- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb +++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb @@ -46,7 +46,7 @@ BBCLASSEXTEND = "native" ALTERNATIVE_PRIORITY = "100" ALTERNATIVE_${PN} = "animate compare composite conjure convert display \ - identify import mogrify montage stream" + identify import magick-script mogrify montage stream" ALTERNATIVE_TARGET[animate] = "${bindir}/animate.im7" ALTERNATIVE_TARGET[compare] = "${bindir}/compare.im7" @@ -56,12 +56,13 @@ ALTERNATIVE_TARGET[convert] = "${bindir}/convert.im7" ALTERNATIVE_TARGET[display] = "${bindir}/display.im7" ALTERNATIVE_TARGET[identify] = "${bindir}/identify.im7" ALTERNATIVE_TARGET[import] = "${bindir}/import.im7" +ALTERNATIVE_TARGET[magick-script] = "${bindir}/magick-script.im7" ALTERNATIVE_TARGET[mogrify] = "${bindir}/mogrify.im7" ALTERNATIVE_TARGET[montage] = "${bindir}/montage.im7" ALTERNATIVE_TARGET[stream] = "${bindir}/stream.im7" ALTERNATIVE_${PN}-doc = "animate.1 compare.1 composite.1 conjure.1 \ - convert.1 display.1 identify.1 import.1 mogrify.1 montage.1 stream.1" + convert.1 display.1 identify.1 import.1 magick-script.1 mogrify.1 montage.1 stream.1" ALTERNATIVE_LINK_NAME[animate.1] = "${mandir}/man1/animate.1" ALTERNATIVE_TARGET[animate.1] = "${mandir}/man1/animate.im7.1" @@ -79,6 +80,8 @@ ALTERNATIVE_LINK_NAME[identify.1] = "${mandir}/man1/identify.1" ALTERNATIVE_TARGET[identify.1] = "${mandir}/man1/identify.im7.1" ALTERNATIVE_LINK_NAME[import.1] = "${mandir}/man1/import.1" ALTERNATIVE_TARGET[import.1] = "${mandir}/man1/import.im7.1" +ALTERNATIVE_LINK_NAME[magick-script.1] = "${mandir}/man1/magick-script.1" +ALTERNATIVE_TARGET[magick-script.1] = "${mandir}/man1/magick-script.im7.1" ALTERNATIVE_LINK_NAME[mogrify.1] = "${mandir}/man1/mogrify.1" ALTERNATIVE_TARGET[mogrify.1] = "${mandir}/man1/mogrify.im7.1" ALTERNATIVE_LINK_NAME[montage.1] = "${mandir}/man1/montage.1" diff --git a/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter/ldflags.patch b/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter/ldflags.patch new file mode 100644 index 000000000..ceda8394a --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter/ldflags.patch @@ -0,0 +1,16 @@ +Append to LDFLAGS so it can respect the LDFLAGS passed from environment. This helps +with using propert GNU_HASH settings during link on mips/arm + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- a/src/Makefile ++++ b/src/Makefile +@@ -24,7 +24,7 @@ CFLAGS = -Wall -Wextra -O \ + -DCONFIG_SSL_CAPATH='"$(SSLCAPATH)"' \ + -DCONFIG_SSL_CAFILE='"$(SSLCAFILE)"' \ + $(INCDIRS) $(MYCFLAGS) +-LDFLAGS = $(LIBDIRS) $(MYLDFLAGS) ++LDFLAGS += $(LIBDIRS) $(MYLDFLAGS) + LIBS = -lm -ldl $(LIBLUA) $(LIBPCRE) $(LIBSSL) $(LIBCRYPTO) $(MYLIBS) + + MAN1 = imapfilter.1 diff --git a/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter_2.6.16.bb b/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter_2.6.16.bb index 7d4e12dfb..86553b5a8 100644 --- a/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter_2.6.16.bb +++ b/meta-openembedded/meta-oe/recipes-support/imapfilter/imapfilter_2.6.16.bb @@ -2,7 +2,9 @@ SUMMARY = "IMAPFilter is a mail filtering utility that processes mailboxes based LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=ccca8573ead8e965c130b6b2946a36ab" -SRC_URI = "https://codeload.github.com/lefcha/${BPN}/tar.gz/v${PV};downloadfilename=v${PV}.tar.gz" +SRC_URI = "https://codeload.github.com/lefcha/${BPN}/tar.gz/v${PV};downloadfilename=${BP}.tar.gz \ + file://ldflags.patch \ +" SRC_URI[sha256sum] = "90af9bc9875e03fb5a09a3233287b74dd817867cb18ec9ff52fead615755563e" DEPENDS= "openssl lua libpcre" @@ -15,3 +17,5 @@ do_install(){ # No need for manuals at this point, MANDIR is hardcoded to depend on prefix rm -rf ${D}${prefix}/man } + +ASNEEDED = "" diff --git a/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.9.bb b/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.11.bb index be72d765e..4f10f3531 100644 --- a/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.9.bb +++ b/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.11.bb @@ -1,11 +1,11 @@ SUMMARY = "Little cms is a small-footprint, speed optimized color management engine" SECTION = "libs" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=6c786c3b7a4afbd3c990f1b81261d516" +LIC_FILES_CHKSUM = "file://COPYING;md5=9391499b030def18e7bb25bab4bee052" SRC_URI = "${SOURCEFORGE_MIRROR}/lcms/lcms2-${PV}.tar.gz" -SRC_URI[md5sum] = "8de1b7724f578d2995c8fdfa35c3ad0e" -SRC_URI[sha256sum] = "48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20" +SRC_URI[md5sum] = "598dae499e58f877ff6788254320f43e" +SRC_URI[sha256sum] = "dc49b9c8e4d7cdff376040571a722902b682a795bf92985a85b48854c270772e" DEPENDS = "tiff" diff --git a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb index f638848d1..6ce318d0b 100644 --- a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb +++ b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb @@ -4,11 +4,11 @@ HOMEPAGE = "http://eigen.tuxfamily.org/" LICENSE = "MPL-2.0" LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad" -SRC_URI = "https://bitbucket.org/eigen/eigen/get/${PV}.tar.bz2;downloadfilename=${BP}.tar.bz2" -SRC_URI[md5sum] = "05b1f7511c93980c385ebe11bd3c93fa" -SRC_URI[sha256sum] = "9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce" +SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;nobranch=1" -S = "${WORKDIR}/eigen-eigen-323c052e1731" +SRCREV = "21ae2afd4edaa1b69782c67a54182d34efe43f9c" + +S = "${WORKDIR}/git" inherit cmake diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.3.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.4.bb index a6320da8e..a9a462866 100644 --- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.3.bb +++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.4.bb @@ -2,8 +2,8 @@ require libgpiod.inc DEPENDS += "autoconf-archive-native" -SRC_URI[md5sum] = "d4826720a8de13379436f9c207237bc0" -SRC_URI[sha256sum] = "0ad080d1eb89c422cf13001293ffa72869ca13028e85dab5f6b3ba90f88da46d" +SRC_URI[md5sum] = "064c2627397e6641c52de09a26951112" +SRC_URI[sha256sum] = "f1cda2789e6a13a92aefc012a76e5a7cc57a1b402d66f71df8719ee314b67699" # enable cxx bindings PACKAGECONFIG ?= "cxx" diff --git a/meta-openembedded/meta-oe/recipes-support/liburing/liburing_0.7.bb b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_0.7.bb new file mode 100644 index 000000000..3a1eaef87 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_0.7.bb @@ -0,0 +1,24 @@ +SUMMARY = "This is the io_uring library, liburing." +DESCRIPTION = "liburing provides helpers to setup and teardown io_uring \ +instances, and also a simplified interface for applications that don't need \ +(or want) to deal with the full kernel side implementation." +HOMEPAGE = "https://github.com/axboe/liburing" +BUGTRACKER = "https://github.com/axboe/liburing/issues" +SECTION = "libs" + +LICENSE = "LGPLv2.1 | MIT" +LIC_FILES_CHKSUM = "file://README;beginline=41;endline=44;md5=d51b5805e2a675685e6a66ca50904cf9" + +SRC_URI = "git://github.com/axboe/liburing.git;branch=master;protocol=https" +SRCREV = "45f0735219a615ae848033c47c7e2d85d101d43e" +S = "${WORKDIR}/git" + +DEPENDS_append_libc-musl = " libucontext" +XCFLAGS = "-pthread" +XCFLAGS_append_libc-musl = " -lucontext" + +EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'LDFLAGS=${LDFLAGS}' 'XCFLAGS=${XCFLAGS}' 'BUILDDIR=${S}'" + +do_install () { + oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir} +} diff --git a/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb b/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb index 97d60a6a8..b1c466352 100644 --- a/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb +++ b/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb @@ -4,7 +4,7 @@ LICENSE = "GPLv2 & LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c" -inherit autotools +inherit autotools update-alternatives PV = "0.1.0" SRCREV = "a826d136e0e8fa53815f1ba05893e6dd74208c15" @@ -14,3 +14,6 @@ SRC_URI = "git://github.com/libusbg/libusbg.git \ S = "${WORKDIR}/git" +ALTERNATIVE_${PN} = "gadget-acm-ecm show-gadgets" +ALTERNATIVE_LINK_NAME[gadget-acm-ecm] = "${bindir}/gadget-acm-ecm" +ALTERNATIVE_LINK_NAME[show-gadgets] = "${bindir}/show-gadgets" diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb index d73ca6106..48fc91143 100644 --- a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb +++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ DEPENDS = "libconfig" -inherit autotools pkgconfig systemd update-rc.d +inherit autotools pkgconfig systemd update-rc.d update-alternatives PV = "0.2.0+git${SRCPV}" SRCREV = "45c14ef4d5d7ced0fbf984208de44ced6d5ed898" @@ -38,3 +38,8 @@ do_install_append() { } RDEPENDS_${PN} += "libusbgx-config" + +ALTERNATIVE_PRIORITY = "90" +ALTERNATIVE_${PN} = "gadget-acm-ecm show-gadgets" +ALTERNATIVE_LINK_NAME[gadget-acm-ecm] = "${bindir}/gadget-acm-ecm" +ALTERNATIVE_LINK_NAME[show-gadgets] = "${bindir}/show-gadgets" diff --git a/meta-openembedded/meta-oe/recipes-support/links/links_2.20.2.bb b/meta-openembedded/meta-oe/recipes-support/links/links_2.21.bb index 1a36291e5..b6048c1d3 100644 --- a/meta-openembedded/meta-oe/recipes-support/links/links_2.20.2.bb +++ b/meta-openembedded/meta-oe/recipes-support/links/links_2.21.bb @@ -9,7 +9,7 @@ EXTRA_OECONF = "--enable-graphics \ --without-directfb --without-pmshell --without-atheos \ --without-x" -SRC_URI[md5sum] = "ee39e612249440d0497535d0dafc3c0e" -SRC_URI[sha256sum] = "4b4f07d0e6261118d1365a5a5bfa31e1eafdbd280cfae6f0e9eedfea51a2f424" +SRC_URI[md5sum] = "b88a46733d6932442ed8a6b751aac6b4" +SRC_URI[sha256sum] = "285eed8591c7781ec26213df82786665aaa1b9286782e8a7a1a7e2a6e1630d63" SRC_URI[icon.md5sum] = "477e8787927c634614bac01b44355a33" SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47" diff --git a/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb b/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb index ff3047f32..537c45874 100644 --- a/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb +++ b/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb @@ -21,6 +21,11 @@ SRC_URI = "https://releases.pagure.org/${BPN}/${BP}.tar.xz" SRC_URI[md5sum] = "d5701a1a541383c0eda328f4a6518751" SRC_URI[sha256sum] = "f7381516bc1a937348efd1d0e14618e0a2afc5d59fe821dd248632d5601b59b5" +inherit update-alternatives + do_install() { oe_runmake install DESTDIR=${D} sysconfdir=${sysconfdir} mandir=${mandir} } + +ALTERNATIVE_${PN} = "mime.types" +ALTERNATIVE_LINK_NAME[mime.types] = "${sysconfdir}/mime.types" diff --git a/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb b/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb index d617b6620..1137f5012 100644 --- a/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb +++ b/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb @@ -10,6 +10,8 @@ RRECOMMENDS_${PN} = "file" SRC_URI = "${DEBIAN_MIRROR}/main/m/mime-support/mime-support_${PV}-1.tar.gz" S = "${WORKDIR}/${BPN}" +inherit update-alternatives + FILES_${PN} += " ${libdir}/mime" docdir_append = "/${BPN}" @@ -56,3 +58,7 @@ do_install () { SRC_URI[md5sum] = "d6e5d715e331147352c50c158dbdec6d" SRC_URI[sha256sum] = "a529c7892cb786f514af71f4ca5a4c3ebc58b538a49ff959c0d97592d38f040a" + +ALTERNATIVE_PRIORITY = "90" +ALTERNATIVE_${PN} = "mime.types" +ALTERNATIVE_LINK_NAME[mime.types] = "${sysconfdir}/mime.types" diff --git a/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb b/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb deleted file mode 100644 index 44f55b58d..000000000 --- a/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> -# Released under the MIT license (see COPYING.MIT for the terms) - -SUMMARY = "A minimal iconv implementation w/ support for UTF-8, ASCII, ISO-8859-1" -HOMEPAGE = "http://tinderbox.dev.gentoo.org/portage/local/misc/mini-iconv/" -LICENSE = "MPL-1.1" -SECTION = "libs" -DEPENDS = "" -PROVIDES = "virtual/libiconv" -LIC_FILES_CHKSUM = "file://iconv.c;beginline=1;endline=6;md5=35af9d9924327fe8a0a1fe3a2cb454c8" -SRC_URI = "http://mirror.meleeweb.net/pub/linux/gentoo/distfiles/mini-iconv.tar.bz2" -SRC_URI[md5sum] = "84412221e26505a2b3855d4a1cdcd0e0" -SRC_URI[sha256sum] = "3552262bf1bcf8e859a2a3a7adfb0367af8593383e730c492e981477aac0a0d4" - - -S = "${WORKDIR}/${BPN}" - -do_install() { - oe_runmake install DESTDIR=${D} PREFIX=${prefix} LIB=${base_libdir} -} diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.0.bb b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.2.bb index e97c01f14..f2cd2909c 100644 --- a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.0.bb +++ b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.2.bb @@ -12,7 +12,7 @@ RDEPENDS_${PN} = "ncurses-terminfo-base" PV_MAJOR = "${@d.getVar('PV').split('.')[0]}" SRC_URI = "https://nano-editor.org/dist/v${PV_MAJOR}/nano-${PV}.tar.xz" -SRC_URI[sha256sum] = "7c0d94be69cd066f20df2868a2da02f7b1d416ce8d47c0850a8bd270897caa36" +SRC_URI[sha256sum] = "32c2da43e1ae9a5e43437d8c6e1ec0388af870c7762c479e5bffb5f292bda7e1" UPSTREAM_CHECK_URI = "https://ftp.gnu.org/gnu/nano" diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch index 1a87a0577..bfc375e83 100644 --- a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch +++ b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch @@ -14,21 +14,18 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> nss/lib/freebl/gcm.c | 2 ++ 2 files changed, 6 insertions(+) -diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile -index f99f769..b0ec81b 100644 --- a/nss/lib/freebl/Makefile +++ b/nss/lib/freebl/Makefile -@@ -125,6 +125,9 @@ else - DEFINES += -DNSS_X86 +@@ -126,6 +126,8 @@ else endif endif -+ + ifdef NS_USE_GCC +ifdef NSS_USE_ARM_HW_CRYPTO + DEFINES += -DNSS_USE_ARM_HW_CRYPTO ifeq ($(CPU_ARCH),aarch64) - DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 - EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha256-armv8.c -@@ -148,6 +151,7 @@ endif + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha1-armv8.c sha256-armv8.c +@@ -150,6 +152,7 @@ endif endif endif endif @@ -36,23 +33,15 @@ index f99f769..b0ec81b 100644 ifeq ($(OS_TARGET),OSF1) DEFINES += -DMP_ASSEMBLY_MULTIPLY -DMP_NO_MP_WORD -diff --git a/nss/lib/freebl/gcm.c b/nss/lib/freebl/gcm.c -index c2cc18d..b77f573 100644 --- a/nss/lib/freebl/gcm.c +++ b/nss/lib/freebl/gcm.c -@@ -18,6 +18,7 @@ - - #include <limits.h> - -+#ifdef NSS_USE_ARM_HW_CRYPTO +@@ -21,7 +21,9 @@ /* old gcc doesn't support some poly64x2_t intrinsic */ #if defined(__aarch64__) && defined(IS_LITTLE_ENDIAN) && \ (defined(__clang__) || defined(__GNUC__) && __GNUC__ > 6) -@@ -27,6 +28,7 @@ - /* We don't test on big endian platform, so disable this on big endian. */ ++# ifdef NSS_USE_ARM_HW_CRYPTO #define USE_ARM_GCM - #endif -+#endif - - /* Forward declarations */ - SECStatus gcm_HashInit_hw(gcmHashContext *ghash); ++# endif + #elif defined(__arm__) && defined(IS_LITTLE_ENDIAN) && \ + !defined(NSS_DISABLE_ARM32_NEON) + /* We don't test on big endian platform, so disable this on big endian. */ diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-pkix-Do-not-use-NULL-where-0-is-needed.patch b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-pkix-Do-not-use-NULL-where-0-is-needed.patch new file mode 100644 index 000000000..432312da2 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-pkix-Do-not-use-NULL-where-0-is-needed.patch @@ -0,0 +1,46 @@ +From 1136cad77c2dc7d8e1daa317877676733e805f29 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 26 Aug 2020 17:30:40 -0700 +Subject: [PATCH] pkix: Do not use NULL where 0 is needed + +Clang finds this error + +pkix_logger.c:316:32: error: cast to smaller integer type 'PKIX_ERRORCLASS' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast] + logger->logComponent = (PKIX_ERRORCLASS)NULL; + ^~~~~~~~~~~~~~~~~~~~~ +pkix_logger.c:617:32: error: cast to smaller integer type 'PKIX_ERRORCLASS' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast] + logger->logComponent = (PKIX_ERRORCLASS)NULL; + ^~~~~~~~~~~~~~~~~~~~~ +2 errors generated. + +Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1661378] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + nss/lib/libpkix/pkix/util/pkix_logger.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/nss/lib/libpkix/pkix/util/pkix_logger.c b/nss/lib/libpkix/pkix/util/pkix_logger.c +index a916e6e..10f537a 100644 +--- a/nss/lib/libpkix/pkix/util/pkix_logger.c ++++ b/nss/lib/libpkix/pkix/util/pkix_logger.c +@@ -313,7 +313,7 @@ pkix_Logger_Destroy( + + logger->callback = NULL; + PKIX_DECREF(logger->context); +- logger->logComponent = (PKIX_ERRORCLASS)NULL; ++ logger->logComponent = (PKIX_ERRORCLASS)0; + + cleanup: + +@@ -614,7 +614,7 @@ PKIX_Logger_Create( + + logger->callback = callback; + logger->maxLevel = 0; +- logger->logComponent = (PKIX_ERRORCLASS)NULL; ++ logger->logComponent = (PKIX_ERRORCLASS)0; + + PKIX_INCREF(loggerContext); + logger->context = loggerContext; +-- +2.28.0 + diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh b/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh deleted file mode 100644 index a74e499f8..000000000 --- a/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# signlibs.sh -# -# (c)2010 Wind River Systems, Inc. -# -# regenerates the .chk files for the NSS libraries that require it -# since the ones that are built have incorrect checksums that were -# calculated on the host where they really need to be done on the -# target - -CHK_FILES=`ls /lib*/*.chk /usr/lib*/*.chk 2>/dev/null` -SIGN_BINARY=`which shlibsign` -for I in $CHK_FILES -do - DN=`dirname $I` - BN=`basename $I .chk` - FN=$DN/$BN.so - $SIGN_BINARY -i $FN -done diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.54.bb b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.56.bb index 4923f6868..997f8950f 100644 --- a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.54.bb +++ b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.56.bb @@ -21,7 +21,6 @@ VERSION_DIR = "${@d.getVar('BP').upper().replace('-', '_').replace('.', '_') + ' SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/${VERSION_DIR}/src/${BP}.tar.gz \ file://nss.pc.in \ - file://signlibs.sh \ file://0001-nss-fix-support-cross-compiling.patch \ file://nss-no-rpath-for-cross-compiling.patch \ file://nss-fix-incorrect-shebang-of-perl.patch \ @@ -32,9 +31,9 @@ SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/${VERSIO file://system-pkcs11.txt \ file://nss-fix-nsinstall-build.patch \ file://0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch \ + file://0001-pkix-Do-not-use-NULL-where-0-is-needed.patch \ " - -SRC_URI[sha256sum] = "dab18bbfcf5e347934cda664df75ce9fd912a5772686c40d3c805e53c08d6e43" +SRC_URI[sha256sum] = "f875e0e8ed3b5ce92d675be4a55aa25a8c1199789a4a01f69b5f2327e2048e9c" UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases" UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes" @@ -57,7 +56,6 @@ do_configure_prepend_libc-musl () { do_compile_prepend_class-native() { export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}/nspr export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE} - export NSS_ENABLE_WERROR=0 } do_compile_prepend_class-nativesdk() { @@ -71,6 +69,7 @@ do_compile_prepend_class-native() { do_compile() { export NSPR_INCLUDE_DIR=${STAGING_INCDIR}/nspr + export NSS_ENABLE_WERROR=0 export CROSS_COMPILE=1 export NATIVE_CC="${BUILD_CC}" @@ -214,7 +213,6 @@ do_install_append() { touch ${D}/${libdir}/$file chmod 755 ${D}/${libdir}/$file done - install -D -m 755 ${WORKDIR}/signlibs.sh ${D}/${bindir}/signlibs.sh install -d ${D}${libdir}/pkgconfig/ sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc @@ -238,20 +236,17 @@ do_install_append_class-target() { } PACKAGE_WRITE_DEPS += "nss-native" + pkg_postinst_${PN} () { - if [ -n "$D" ]; then - for I in $D${libdir}/lib*.chk; do - DN=`dirname $I` - BN=`basename $I .chk` - FN=$DN/$BN.so - shlibsign -i $FN - if [ $? -ne 0 ]; then - exit 1 - fi - done - else - signlibs.sh - fi + for I in $D${libdir}/lib*.chk; do + DN=`dirname $I` + BN=`basename $I .chk` + FN=$DN/$BN.so + shlibsign -i $FN + if [ $? -ne 0 ]; then + echo "shlibsign -i $FN failed" + fi + done } PACKAGES =+ "${PN}-smime" diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.4.0.bb b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.4.0.bb index 372e15cd0..c83186de0 100644 --- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.4.0.bb +++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.4.0.bb @@ -199,6 +199,13 @@ RDEPENDS_python3-opencv = "python3-core python3-numpy" RDEPENDS_${PN}-apps = "bash" +do_compile_prepend() { + # remove the build host info to improve reproducibility + if [ -f ${WORKDIR}/build/modules/core/version_string.inc ]; then + sed -i "s#${WORKDIR}#/workdir#g" ${WORKDIR}/build/modules/core/version_string.inc + fi +} + do_install_append() { # Move Python files into correct library folder (for multilib build) if [ "$libdir" != "/usr/lib" -a -d ${D}/usr/lib ]; then diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.50.bb b/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.51.bb index 3a130f970..d2c574608 100644 --- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.50.bb +++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.51.bb @@ -25,8 +25,8 @@ SRC_URI = "http://www.openldap.org/software/download/OpenLDAP/openldap-release/$ file://remove-user-host-pwd-from-version.patch \ " -SRC_URI[md5sum] = "f9ed44ef373abed04c9e4c8586260f9e" -SRC_URI[sha256sum] = "5cb57d958bf5c55a678c6a0f06821e0e5504d5a92e6a33240841fbca1db586b8" +SRC_URI[md5sum] = "0d2025896cf1c17af7304ecc57ec9531" +SRC_URI[sha256sum] = "f490775ea4c6506b7210ee55a102c8f4aacfe9d1c8eaa633c7316d33a714be62" DEPENDS = "util-linux groff-native" diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb index eacd4abc0..277d12057 100644 --- a/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb +++ b/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb @@ -8,10 +8,10 @@ DEPENDS = "pidgin json-glib glib-2.0 zlib" inherit pkgconfig SRC_URI = "git://github.com/EionRobb/skype4pidgin;branch=master;protocol=git" -SRCREV = "77f94b55bfb8b0dbc7fafa7461057d33b6802236" +SRCREV = "b226d1c457d73900ae89b8a7469247fbe33677a6" S = "${WORKDIR}/git" -PV = "1.6+git${SRCPV}" +PV = "1.7+git${SRCPV}" do_compile() { oe_runmake -C skypeweb; diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_20.08.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_20.09.0.bb index c3f9716ef..ceff2d0d6 100644 --- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_20.08.0.bb +++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_20.09.0.bb @@ -7,7 +7,7 @@ SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \ file://0001-Do-not-overwrite-all-our-build-flags.patch \ file://basename-include.patch \ " -SRC_URI[sha256sum] = "ae65fef04bbf63259a6352e7b620719115d4fb97f5079b0b8b00a8eb0c86eca5" +SRC_URI[sha256sum] = "4ed6eb5ddc4c37f2435c9d78ff9c7c4036455aea3507d1ce8400070aab745363" DEPENDS = "fontconfig zlib cairo lcms glib-2.0" diff --git a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.30.bb b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.31.bb index 7831dd956..e99f8ac6a 100644 --- a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.30.bb +++ b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.31.bb @@ -10,7 +10,7 @@ inherit autotools-brokensep python3native pkgconfig SRC_URI = "git://github.com/abrt/satyr.git \ file://0002-fix-compile-failure-against-musl-C-library.patch \ " -SRCREV = "871a07001c64cfce15dffd7e93a5c3d55af6d5e8" +SRCREV = "79506592fa61fa10aa2e186158eecfa10b39e905" S = "${WORKDIR}/git" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" 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 48eb26893..8bbc6815e 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 @@ -4,7 +4,7 @@ SECTION = "console/utils" LICENSE="GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" -inherit gettext autotools +inherit gettext autotools update-alternatives SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \ file://0001-Fix-build-with-clang.patch \ @@ -25,3 +25,7 @@ do_install_append() { } BBCLASSEXTEND = "native nativesdk" + +ALTERNATIVE_${PN} = "uudecode uuencode" +ALTERNATIVE_LINK_NAME[uudecode] = "${bindir}/uudecode" +ALTERNATIVE_LINK_NAME[uuencode] = "${bindir}/uuencode" diff --git a/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.7.0.bb b/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.8.0.bb index ce491da0d..b79eb7c28 100644 --- a/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.7.0.bb +++ b/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.8.0.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/gabime/spdlog/wiki" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" -SRCREV = "616caa5d30172b65cc3a06800894c575d70cb8e6" +SRCREV = "4a9ccf7e38e257feecce0c579a782741254eaeef" SRC_URI = "git://github.com/gabime/spdlog.git;protocol=git;branch=v1.x;" DEPENDS += "fmt" 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 625756873..06fb82b85 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 @@ AUTHOR = "Christophe BLAESS" LICENSE="GPLv2" LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381" -BPV = "0.8.4" +BPV = "0.8.5" PV = "${BPV}" -SRCREV = "4a36a84f7df291ddaebd397aecf0c8515256a8e0" +SRCREV = "3c93b9038a7c4d9de4302ab6f14372e9fa381f3c" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc index ff6d9d26a..2b38f4d69 100644 --- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc +++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc @@ -131,10 +131,6 @@ RDEPENDS_${PN} += "${PN}-libs" CONFFILES_${PN} = "${sysconfdir}/${BPN}.conf ${sysconfdir}/scl.conf" -# syslog initscript is handled explicitly because order of -# update-rc.d and update-alternatives is important -RDEPENDS_${PN} += " ${@oe.utils.conditional("ONLINE_PACKAGE_MANAGEMENT", "none", "", "update-rc.d", d)}" - RCONFLICTS_${PN} = "busybox-syslog sysklogd rsyslog" RCONFLICTS_${PN}-libs = "busybox-syslog sysklogd rsyslog" diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-fixes_for_mm_struct.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-fixes_for_mm_struct.patch deleted file mode 100644 index 1ad5ce51b..000000000 --- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0001-fixes_for_mm_struct.patch +++ /dev/null @@ -1,176 +0,0 @@ -From 98070c936931879d2b8e22939724b5a0689721d0 Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Tue, 18 Aug 2020 17:48:29 +0800 -Subject: [PATCH 1/3] fixes_for_mm_struct - -Upstream-Status: Backport [https://www.virtualbox.org/ticket/19644] - -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - .../Runtime/r0drv/linux/memobj-r0drv-linux.c | 74 +++++++++++++++++-- - 1 file changed, 67 insertions(+), 7 deletions(-) - -diff --git a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c -index 37389bcc..cdc7e8e6 100644 ---- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c -+++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c -@@ -222,9 +222,17 @@ static void *rtR0MemObjLinuxDoMmap(RTR3PTR R3PtrFixed, size_t cb, size_t uAlignm - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) - ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); - #else -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - down_write(&pTask->mm->mmap_sem); -+#else -+ down_write(&pTask->mm->mmap_lock); -+#endif - ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - up_write(&pTask->mm->mmap_sem); -+#else -+ up_write(&pTask->mm->mmap_lock); -+#endif - #endif - } - else -@@ -232,9 +240,17 @@ static void *rtR0MemObjLinuxDoMmap(RTR3PTR R3PtrFixed, size_t cb, size_t uAlignm - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) - ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); - #else -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - down_write(&pTask->mm->mmap_sem); -+#else -+ down_write(&pTask->mm->mmap_lock); -+#endif - ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - up_write(&pTask->mm->mmap_sem); -+#else -+ up_write(&pTask->mm->mmap_lock); -+#endif - #endif - if ( !(ulAddr & ~PAGE_MASK) - && (ulAddr & (uAlignment - 1))) -@@ -269,13 +285,29 @@ static void rtR0MemObjLinuxDoMunmap(void *pv, size_t cb, struct task_struct *pTa - Assert(pTask == current); RT_NOREF_PV(pTask); - vm_munmap((unsigned long)pv, cb); - #elif defined(USE_RHEL4_MUNMAP) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - down_write(&pTask->mm->mmap_sem); -+#else -+ down_write(&pTask->mm->mmap_lock); -+#endif - do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - up_write(&pTask->mm->mmap_sem); - #else -+ up_write(&pTask->mm->mmap_lock); -+#endif -+#else -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - down_write(&pTask->mm->mmap_sem); -+#else -+ down_write(&pTask->mm->mmap_lock); -+#endif - do_munmap(pTask->mm, (unsigned long)pv, cb); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - up_write(&pTask->mm->mmap_sem); -+#else -+ up_write(&pTask->mm->mmap_lock); -+#endif - #endif - } - -@@ -593,7 +625,11 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem) - size_t iPage; - Assert(pTask); - if (pTask && pTask->mm) -- down_read(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ down_read(&pTask->mm->mmap_sem); -+#else -+ down_read(&pTask->mm->mmap_lock); -+#endif - - iPage = pMemLnx->cPages; - while (iPage-- > 0) -@@ -608,7 +644,11 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem) - } - - if (pTask && pTask->mm) -- up_read(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ up_read(&pTask->mm->mmap_sem); -+#else -+ up_read(&pTask->mm->mmap_lock); -+#endif - } - /* else: kernel memory - nothing to do here. */ - break; -@@ -1076,7 +1116,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3P - papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages); - if (papVMAs) - { -- down_read(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ down_read(&pTask->mm->mmap_sem); -+#else -+ down_read(&pTask->mm->mmap_lock); -+#endif - - /* - * Get user pages. -@@ -1162,7 +1206,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3P - papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED; - } - -- up_read(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ up_read(&pTask->mm->mmap_sem); -+#else -+ up_read(&pTask->mm->mmap_lock); -+#endif - - RTMemFree(papVMAs); - -@@ -1189,7 +1237,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3P - #endif - } - -- up_read(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ up_read(&pTask->mm->mmap_sem); -+#else -+ up_read(&pTask->mm->mmap_lock); -+#endif - - RTMemFree(papVMAs); - rc = VERR_LOCK_FAILED; -@@ -1604,7 +1656,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ p - const size_t cPages = (offSub + cbSub) >> PAGE_SHIFT; - size_t iPage; - -- down_write(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ down_write(&pTask->mm->mmap_sem); -+#else -+ down_write(&pTask->mm->mmap_lock); -+#endif - - rc = VINF_SUCCESS; - if (pMemLnxToMap->cPages) -@@ -1721,7 +1777,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ p - } - #endif /* CONFIG_NUMA_BALANCING */ - -- up_write(&pTask->mm->mmap_sem); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+ up_write(&pTask->mm->mmap_sem); -+#else -+ up_write(&pTask->mm->mmap_lock); -+#endif - - if (RT_SUCCESS(rc)) - { --- -2.18.2 - diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0002-fixes_for_module_memory.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0002-fixes_for_module_memory.patch deleted file mode 100644 index a3cfc3b37..000000000 --- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0002-fixes_for_module_memory.patch +++ /dev/null @@ -1,65 +0,0 @@ -From bb580f7b601e5395a2f8fcb2485387035273320f Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Tue, 18 Aug 2020 17:49:34 +0800 -Subject: [PATCH 2/3] fixes_for_module_memory - -Upstream-Status: Backport [https://www.virtualbox.org/ticket/19644] - -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - .../Runtime/r0drv/linux/alloc-r0drv-linux.c | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git a/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c -index bbb8acc6..45cd34c7 100644 ---- a/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c -+++ b/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c -@@ -153,6 +153,8 @@ RT_EXPORT_SYMBOL(RTR0MemExecDonate); - - - #ifdef RTMEMALLOC_EXEC_VM_AREA -+ -+ - /** - * Allocate executable kernel memory in the module range. - * -@@ -168,7 +170,12 @@ static PRTMEMHDR rtR0MemAllocExecVmArea(size_t cb) - struct vm_struct *pVmArea; - size_t iPage; - -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) -+ pVmArea = __get_vm_area_caller(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END, -+ __builtin_return_address(0)); -+#else - pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END); -+#endif - if (!pVmArea) - return NULL; - pVmArea->nr_pages = 0; /* paranoia? */ -@@ -201,14 +208,21 @@ static PRTMEMHDR rtR0MemAllocExecVmArea(size_t cb) - # endif - pVmArea->nr_pages = cPages; - pVmArea->pages = papPages; -- if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC, -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) -+ unsigned long start = (unsigned long)pVmArea->addr; -+ unsigned long size = get_vm_area_size(pVmArea); -+ -+ if (!map_kernel_range(start, size, PAGE_KERNEL_EXEC, papPages)) -+#else -+ if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC, - # if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) - &papPagesIterator - # else - papPages - # endif - )) -- { -+#endif -+ { - PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr; - pHdrEx->pVmArea = pVmArea; - pHdrEx->pvDummy = NULL; --- -2.18.2 - diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0003-fixes_for_changes_in_cpu_tlbstate.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0003-fixes_for_changes_in_cpu_tlbstate.patch deleted file mode 100644 index 6a3e63f63..000000000 --- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/0003-fixes_for_changes_in_cpu_tlbstate.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 6089974a81b1b44e1d2dfa5af1fdc110dfee40c1 Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Tue, 18 Aug 2020 17:51:24 +0800 -Subject: [PATCH 3/3] fixes_for_changes_in_cpu_tlbstate - -Upstream-Status: Backport [https://www.virtualbox.org/ticket/19644] - -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c -index c7d0d99a..2e7aa6e1 100644 ---- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c -+++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c -@@ -757,12 +757,19 @@ EXPORT_SYMBOL(SUPDrvLinuxIDC); - RTCCUINTREG VBOXCALL supdrvOSChangeCR4(RTCCUINTREG fOrMask, RTCCUINTREG fAndMask) - { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - RTCCUINTREG uOld = this_cpu_read(cpu_tlbstate.cr4); -+#else -+ RTCCUINTREG uOld = __read_cr4(); -+#endif - RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask; - if (uNew != uOld) - { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) - this_cpu_write(cpu_tlbstate.cr4, uNew); - __write_cr4(uNew); -+#endif -+ ASMSetCR4(uNew); - } - #else - RTCCUINTREG uOld = ASMGetCR4(); --- -2.18.2 - diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/021-linux-5-8.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/021-linux-5-8.patch new file mode 100644 index 000000000..9d4575060 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/021-linux-5-8.patch @@ -0,0 +1,5046 @@ +fix Linux 5.8 + +This is a squashed patch with following upstream revisions: + + r85208 + r85430 + r85431 + r85432 + r85447 # context required adjustment + r85453 + r85460 + r85461 # context required adjustment + r85500 + r85501 + r85503 + r85504 + r85505 + r85506 + r85507 # context required adjustment + r85509 + r85510 + r85511 + r85514 + r85516 + r85517 + r85518 + r85525 + r85526 + r85527 + r85533 + r85534 + r85540 + r85541 + r85545 + r85546 + r85552 + r85555 + r85556 + r85590 + +Thanks a lot to loqs for his hard work on FS#67488! + +--- a/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c ++++ b/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c +@@ -31,6 +31,12 @@ + #define LOG_GROUP RTLOGGROUP_TIME + #include "the-linux-kernel.h" + #include "internal/iprt.h" ++/* Make sure we have the setting functions we need for RTTimeNow: */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16) ++# define RTTIME_INCL_TIMEVAL ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) ++# define RTTIME_INCL_TIMESPEC ++#endif + #include <iprt/time.h> + #include <iprt/asm.h> + +@@ -181,22 +187,19 @@ RT_EXPORT_SYMBOL(RTTimeSystemMilliTS); + RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime) + { + IPRT_LINUX_SAVE_EFL_AC(); +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) +-/* On Linux 4.20, time.h includes time64.h and we have to use 64-bit times. */ +-# ifdef _LINUX_TIME64_H ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0) + struct timespec64 Ts; +- ktime_get_real_ts64(&Ts); +-# else +- struct timespec Ts; +- ktime_get_real_ts(&Ts); +-# endif ++ ktime_get_real_ts64(&Ts); /* ktime_get_real_ts64 was added as a macro in 3.17, function since 4.18. */ + IPRT_LINUX_RESTORE_EFL_AC(); +-# ifdef _LINUX_TIME64_H + return RTTimeSpecSetTimespec64(pTime, &Ts); +-# else ++ ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) ++ struct timespec Ts; ++ ktime_get_real_ts(&Ts); /* ktime_get_real_ts was removed in Linux 4.20. */ ++ IPRT_LINUX_RESTORE_EFL_AC(); + return RTTimeSpecSetTimespec(pTime, &Ts); +-# endif +-#else /* < 2.6.16 */ ++ ++#else /* < 2.6.16 */ + struct timeval Tv; + do_gettimeofday(&Tv); + IPRT_LINUX_RESTORE_EFL_AC(); +--- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c ++++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c +@@ -52,6 +52,14 @@ + # define PAGE_READONLY_EXEC PAGE_READONLY + #endif + ++/** @def IPRT_USE_ALLOC_VM_AREA_FOR_EXEC ++ * Whether we use alloc_vm_area (3.2+) for executable memory. ++ * This is a must for 5.8+, but we enable it all the way back to 3.2.x for ++ * better W^R compliance (fExecutable flag). */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) || defined(DOXYGEN_RUNNING) ++# define IPRT_USE_ALLOC_VM_AREA_FOR_EXEC ++#endif ++ + /* + * 2.6.29+ kernels don't work with remap_pfn_range() anymore because + * track_pfn_vma_new() is apparently not defined for non-RAM pages. +@@ -72,12 +80,27 @@ + # define gfp_t unsigned + #endif + ++/* ++ * Wrappers around mmap_lock/mmap_sem difference. ++ */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) ++# define LNX_MM_DOWN_READ(a_pMm) down_read(&(a_pMm)->mmap_lock) ++# define LNX_MM_UP_READ(a_pMm) up_read(&(a_pMm)->mmap_lock) ++# define LNX_MM_DOWN_WRITE(a_pMm) down_write(&(a_pMm)->mmap_lock) ++# define LNX_MM_UP_WRITE(a_pMm) up_write(&(a_pMm)->mmap_lock) ++#else ++# define LNX_MM_DOWN_READ(a_pMm) down_read(&(a_pMm)->mmap_sem) ++# define LNX_MM_UP_READ(a_pMm) up_read(&(a_pMm)->mmap_sem) ++# define LNX_MM_DOWN_WRITE(a_pMm) down_write(&(a_pMm)->mmap_sem) ++# define LNX_MM_UP_WRITE(a_pMm) up_write(&(a_pMm)->mmap_sem) ++#endif ++ + + /********************************************************************************************************************************* + * Structures and Typedefs * + *********************************************************************************************************************************/ + /** +- * The Darwin version of the memory object structure. ++ * The Linux version of the memory object structure. + */ + typedef struct RTR0MEMOBJLNX + { +@@ -90,11 +113,20 @@ typedef struct RTR0MEMOBJLNX + bool fExecutable; + /** Set if we've vmap'ed the memory into ring-0. */ + bool fMappedToRing0; ++#ifdef IPRT_USE_ALLOC_VM_AREA_FOR_EXEC ++ /** Return from alloc_vm_area() that we now need to use for executable ++ * memory. */ ++ struct vm_struct *pArea; ++ /** PTE array that goes along with pArea (must be freed). */ ++ pte_t **papPtesForArea; ++#endif + /** The pages in the apPages array. */ + size_t cPages; + /** Array of struct page pointers. (variable size) */ + struct page *apPages[1]; +-} RTR0MEMOBJLNX, *PRTR0MEMOBJLNX; ++} RTR0MEMOBJLNX; ++/** Pointer to the linux memory object. */ ++typedef RTR0MEMOBJLNX *PRTR0MEMOBJLNX; + + + static void rtR0MemObjLinuxFreePages(PRTR0MEMOBJLNX pMemLnx); +@@ -182,7 +214,7 @@ static pgprot_t rtR0MemObjLinuxConvertPr + * Worker for rtR0MemObjNativeReserveUser and rtR0MemObjNativerMapUser that creates + * an empty user space mapping. + * +- * We acquire the mmap_sem of the task! ++ * We acquire the mmap_sem/mmap_lock of the task! + * + * @returns Pointer to the mapping. + * (void *)-1 on failure. +@@ -222,9 +254,9 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); + #else +- down_write(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_WRITE(pTask->mm); + ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); +- up_write(&pTask->mm->mmap_sem); ++ LNX_MM_UP_WRITE(pTask->mm); + #endif + } + else +@@ -232,9 +264,9 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); + #else +- down_write(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_WRITE(pTask->mm); + ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); +- up_write(&pTask->mm->mmap_sem); ++ LNX_MM_UP_WRITE(pTask->mm); + #endif + if ( !(ulAddr & ~PAGE_MASK) + && (ulAddr & (uAlignment - 1))) +@@ -257,7 +289,7 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P + * Worker that destroys a user space mapping. + * Undoes what rtR0MemObjLinuxDoMmap did. + * +- * We acquire the mmap_sem of the task! ++ * We acquire the mmap_sem/mmap_lock of the task! + * + * @param pv The ring-3 mapping. + * @param cb The size of the mapping. +@@ -269,13 +301,13 @@ static void rtR0MemObjLinuxDoMunmap(void + Assert(pTask == current); RT_NOREF_PV(pTask); + vm_munmap((unsigned long)pv, cb); + #elif defined(USE_RHEL4_MUNMAP) +- down_write(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_WRITE(pTask->mm); + do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */ +- up_write(&pTask->mm->mmap_sem); ++ LNX_MM_UP_WRITE(pTask->mm); + #else +- down_write(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_WRITE(pTask->mm); + do_munmap(pTask->mm, (unsigned long)pv, cb); +- up_write(&pTask->mm->mmap_sem); ++ LNX_MM_UP_WRITE(pTask->mm); + #endif + } + +@@ -520,15 +552,49 @@ static int rtR0MemObjLinuxVMap(PRTR0MEMO + pgprot_val(fPg) |= _PAGE_NX; + # endif + ++# ifdef IPRT_USE_ALLOC_VM_AREA_FOR_EXEC ++ if (fExecutable) ++ { ++ pte_t **papPtes = (pte_t **)kmalloc_array(pMemLnx->cPages, sizeof(papPtes[0]), GFP_KERNEL); ++ if (papPtes) ++ { ++ pMemLnx->pArea = alloc_vm_area(pMemLnx->Core.cb, papPtes); /* Note! pArea->nr_pages is not set. */ ++ if (pMemLnx->pArea) ++ { ++ size_t i; ++ Assert(pMemLnx->pArea->size >= pMemLnx->Core.cb); /* Note! includes guard page. */ ++ Assert(pMemLnx->pArea->addr); ++# ifdef _PAGE_NX ++ pgprot_val(fPg) |= _PAGE_NX; /* Uses RTR0MemObjProtect to clear NX when memory ready, W^X fashion. */ ++# endif ++ pMemLnx->papPtesForArea = papPtes; ++ for (i = 0; i < pMemLnx->cPages; i++) ++ *papPtes[i] = mk_pte(pMemLnx->apPages[i], fPg); ++ pMemLnx->Core.pv = pMemLnx->pArea->addr; ++ pMemLnx->fMappedToRing0 = true; ++ } ++ else ++ { ++ kfree(papPtes); ++ rc = VERR_MAP_FAILED; ++ } ++ } ++ else ++ rc = VERR_MAP_FAILED; ++ } ++ else ++# endif ++ { + # ifdef VM_MAP +- pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_MAP, fPg); ++ pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_MAP, fPg); + # else +- pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_ALLOC, fPg); ++ pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_ALLOC, fPg); + # endif +- if (pMemLnx->Core.pv) +- pMemLnx->fMappedToRing0 = true; +- else +- rc = VERR_MAP_FAILED; ++ if (pMemLnx->Core.pv) ++ pMemLnx->fMappedToRing0 = true; ++ else ++ rc = VERR_MAP_FAILED; ++ } + #else /* < 2.4.22 */ + rc = VERR_NOT_SUPPORTED; + #endif +@@ -554,6 +620,22 @@ static int rtR0MemObjLinuxVMap(PRTR0MEMO + static void rtR0MemObjLinuxVUnmap(PRTR0MEMOBJLNX pMemLnx) + { + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) ++# ifdef IPRT_USE_ALLOC_VM_AREA_FOR_EXEC ++ if (pMemLnx->pArea) ++ { ++# if 0 ++ pte_t **papPtes = pMemLnx->papPtesForArea; ++ size_t i; ++ for (i = 0; i < pMemLnx->cPages; i++) ++ *papPtes[i] = 0; ++# endif ++ free_vm_area(pMemLnx->pArea); ++ kfree(pMemLnx->papPtesForArea); ++ pMemLnx->pArea = NULL; ++ pMemLnx->papPtesForArea = NULL; ++ } ++ else ++# endif + if (pMemLnx->fMappedToRing0) + { + Assert(pMemLnx->Core.pv); +@@ -593,7 +675,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR + size_t iPage; + Assert(pTask); + if (pTask && pTask->mm) +- down_read(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_READ(pTask->mm); + + iPage = pMemLnx->cPages; + while (iPage-- > 0) +@@ -608,7 +690,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR + } + + if (pTask && pTask->mm) +- up_read(&pTask->mm->mmap_sem); ++ LNX_MM_UP_READ(pTask->mm); + } + /* else: kernel memory - nothing to do here. */ + break; +@@ -1076,7 +1158,7 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser + papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages); + if (papVMAs) + { +- down_read(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_READ(pTask->mm); + + /* + * Get user pages. +@@ -1162,7 +1244,7 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser + papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED; + } + +- up_read(&pTask->mm->mmap_sem); ++ LNX_MM_UP_READ(pTask->mm); + + RTMemFree(papVMAs); + +@@ -1189,7 +1271,7 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser + #endif + } + +- up_read(&pTask->mm->mmap_sem); ++ LNX_MM_UP_READ(pTask->mm); + + RTMemFree(papVMAs); + rc = VERR_LOCK_FAILED; +@@ -1422,6 +1504,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKerne + * Use vmap - 2.4.22 and later. + */ + pgprot_t fPg = rtR0MemObjLinuxConvertProt(fProt, true /* kernel */); ++ /** @todo We don't really care too much for EXEC here... 5.8 always adds NX. */ + Assert(((offSub + cbSub) >> PAGE_SHIFT) <= pMemLnxToMap->cPages); + # ifdef VM_MAP + pMemLnx->Core.pv = vmap(&pMemLnxToMap->apPages[offSub >> PAGE_SHIFT], cbSub >> PAGE_SHIFT, VM_MAP, fPg); +@@ -1604,7 +1687,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( + const size_t cPages = (offSub + cbSub) >> PAGE_SHIFT; + size_t iPage; + +- down_write(&pTask->mm->mmap_sem); ++ LNX_MM_DOWN_WRITE(pTask->mm); + + rc = VINF_SUCCESS; + if (pMemLnxToMap->cPages) +@@ -1721,7 +1804,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( + } + #endif /* CONFIG_NUMA_BALANCING */ + +- up_write(&pTask->mm->mmap_sem); ++ LNX_MM_UP_WRITE(pTask->mm); + + if (RT_SUCCESS(rc)) + { +@@ -1753,6 +1836,29 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( + + DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINTERNAL pMem, size_t offSub, size_t cbSub, uint32_t fProt) + { ++# ifdef IPRT_USE_ALLOC_VM_AREA_FOR_EXEC ++ /* ++ * Currently only supported when we've got addresses PTEs from the kernel. ++ */ ++ PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem; ++ if (pMemLnx->pArea && pMemLnx->papPtesForArea) ++ { ++ pgprot_t const fPg = rtR0MemObjLinuxConvertProt(fProt, true /*fKernel*/); ++ size_t const cPages = (offSub + cbSub) >> PAGE_SHIFT; ++ pte_t **papPtes = pMemLnx->papPtesForArea; ++ size_t i; ++ ++ for (i = offSub >> PAGE_SHIFT; i < cPages; i++) ++ { ++ set_pte(papPtes[i], mk_pte(pMemLnx->apPages[i], fPg)); ++ } ++ preempt_disable(); ++ __flush_tlb_all(); ++ preempt_enable(); ++ return VINF_SUCCESS; ++ } ++# endif ++ + NOREF(pMem); + NOREF(offSub); + NOREF(cbSub); +--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c ++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c +@@ -144,9 +144,9 @@ static int force_async_tsc = 0; + * Memory for the executable memory heap (in IPRT). + */ + # ifdef DEBUG +-# define EXEC_MEMORY_SIZE 8388608 /* 8 MB */ ++# define EXEC_MEMORY_SIZE 10485760 /* 10 MB */ + # else +-# define EXEC_MEMORY_SIZE 2097152 /* 2 MB */ ++# define EXEC_MEMORY_SIZE 8388608 /* 8 MB */ + # endif + extern uint8_t g_abExecMemory[EXEC_MEMORY_SIZE]; + # ifndef VBOX_WITH_TEXT_MODMEM_HACK +@@ -756,20 +756,25 @@ EXPORT_SYMBOL(SUPDrvLinuxIDC); + + RTCCUINTREG VBOXCALL supdrvOSChangeCR4(RTCCUINTREG fOrMask, RTCCUINTREG fAndMask) + { +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) +- RTCCUINTREG uOld = this_cpu_read(cpu_tlbstate.cr4); +- RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) ++ RTCCUINTREG const uOld = __read_cr4(); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) ++ RTCCUINTREG const uOld = this_cpu_read(cpu_tlbstate.cr4); ++#else ++ RTCCUINTREG const uOld = ASMGetCR4(); ++#endif ++ RTCCUINTREG const uNew = (uOld & fAndMask) | fOrMask; + if (uNew != uOld) + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) ++ ASMSetCR4(uNew); ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) + this_cpu_write(cpu_tlbstate.cr4, uNew); + __write_cr4(uNew); +- } + #else +- RTCCUINTREG uOld = ASMGetCR4(); +- RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask; +- if (uNew != uOld) + ASMSetCR4(uNew); + #endif ++ } + return uOld; + } + +--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c ++++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c +@@ -52,7 +52,7 @@ + #endif + #include <linux/seq_file.h> + #include <linux/vfs.h> +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 62) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 62) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + # include <linux/vermagic.h> + #endif + #include <VBox/err.h> +--- a/Config.kmk ++++ b/Config.kmk +@@ -4462,15 +4462,20 @@ endif # pe + + ifeq ($(VBOX_LDR_FMT),elf) + TEMPLATE_VBoxR0_TOOL = $(VBOX_GCC_TOOL) +-TEMPLATE_VBoxR0_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK) +-TEMPLATE_VBoxR0_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) -fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK) +-TEMPLATE_VBoxR0_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables -ffreestanding +-TEMPLATE_VBoxR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables ++TEMPLATE_VBoxR0_CFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) \ ++ $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions \ ++ $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK) ++TEMPLATE_VBoxR0_CXXFLAGS = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) \ ++ $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions \ ++ $(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) \ ++ -fno-rtti $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK) +++TEMPLATE_VBoxR0_CFLAGS.amd64 = -m64 -mno-red-zone -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables -ffreestanding +++TEMPLATE_VBoxR0_CXXFLAGS.amd64 = -m64 -mno-red-zone -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables + TEMPLATE_VBoxR0_CXXFLAGS.freebsd = -ffreestanding + if $(VBOX_GCC_VERSION_CC) < 30400 + TEMPLATE_VBoxR0_DEFS += RT_WITHOUT_PRAGMA_ONCE + endif +-ifeq ($(KBUILD_TARGET),solaris) ++ ifeq ($(KBUILD_TARGET),solaris) + TEMPLATE_VBoxR0_LDFLAGS = -r + TEMPLATE_VBoxR0_LDFLAGS.solaris = -u _init -u _info + TEMPLATE_VBoxR0_LIBS.solaris = \ +@@ -4481,19 +4486,32 @@ ifeq ($(KBUILD_TARGET),solaris) + endif + # Solaris driver signing. + TEMPLATE_VBoxR0_POST_CMDS = $(VBOX_SIGN_DRIVER_CMDS) +-else ++ else + TEMPLATE_VBoxR0_LDFLAGS = -nostdlib -Bsymbolic -g + ## @todo WTF doesn't the globals work? Debug info is supposed to be split everywhere. GRR + TEMPLATE_VBoxR0_LD_DEBUG = split +-endif +-ifn1of ($(KBUILD_TARGET),solaris freebsd) ++ endif ++ if1of ($(KBUILD_TARGET), linux) ++VBOX_WITH_VBOXR0_AS_DLL = 1 ++TEMPLATE_VBoxR0_DLLSUFF = .r0 ++TEMPLATE_VBoxR0_CFLAGS += -fPIC ++TEMPLATE_VBoxR0_CXXFLAGS += -fPIC ++TEMPLATE_VBoxR0_LDFLAGS += ++TEMPLATE_VBoxR0_DTRACE_HDR_FLAGS += --pic ++TEMPLATE_VBoxR0_DTRACE_OBJ_FLAGS += --pic ++ else ++TEMPLATE_VBoxR0_CFLAGS.amd64 += -mcmodel=kernel ++TEMPLATE_VBoxR0_CXXFLAGS.amd64 += -mcmodel=kernel ++ endif ++ ifn1of ($(KBUILD_TARGET),solaris freebsd) + TEMPLATE_VBoxR0_LIBS = \ + $(VBOX_GCC_LIBGCC) # intrinsics +-endif +-if1of ($(KBUILD_TARGET),linux) +- TEMPLATE_VBoxR0_POST_CMDS = $(if $(eq $(tool_do),LINK_SYSMOD),if readelf -S $(out)|grep -q "[cd]tors"; then echo "Found ctors/dtors in $(out)!"; exit 1; fi) +-endif +-endif ++ endif ++ if1of ($(KBUILD_TARGET),linux) ++ TEMPLATE_VBoxR0_POST_CMDS += $(NLTAB)\ ++ $(if $(eq $(tool_do),LINK_SYSMOD),if readelf -S $(out)|grep -q "[cd]tors"; then echo "Found ctors/dtors in $(out)!"; exit 1; fi) ++ endif ++endif # elf + + ifeq ($(VBOX_LDR_FMT),macho) + TEMPLATE_VBoxR0_TOOL = $(VBOX_GCC_TOOL) +--- a/tools/bin/gen-slickedit-workspace.sh ++++ b/tools/bin/gen-slickedit-workspace.sh +@@ -496,11 +496,13 @@ my_generate_usercpp_h() + # + # Probe the slickedit user config, picking the most recent version. + # ++ MY_VSLICK_DB_OLD= + if test -z "${MY_SLICK_CONFIG}"; then + if test -d "${HOME}/Library/Application Support/SlickEdit"; then + MY_SLICKDIR_="${HOME}/Library/Application Support/SlickEdit" + MY_USERCPP_H="unxcpp.h" + MY_VSLICK_DB="vslick.sta" # was .stu earlier, 24 is using .sta. ++ MY_VSLICK_DB_OLD="vslick.stu" + elif test -d "${HOMEDRIVE}${HOMEPATH}/Documents/My SlickEdit Config"; then + MY_SLICKDIR_="${HOMEDRIVE}${HOMEPATH}/Documents/My SlickEdit Config" + MY_USERCPP_H="usercpp.h" +@@ -508,7 +510,8 @@ my_generate_usercpp_h() + else + MY_SLICKDIR_="${HOME}/.slickedit" + MY_USERCPP_H="unxcpp.h" +- MY_VSLICK_DB="vslick.stu" ++ MY_VSLICK_DB="vslick.sta" ++ MY_VSLICK_DB_OLD="vslick.stu" + fi + else + MY_SLICKDIR_="${MY_SLICK_CONFIG}" +@@ -517,7 +520,8 @@ my_generate_usercpp_h() + MY_VSLICK_DB="vslick.sta" + else + MY_USERCPP_H="unxcpp.h" +- MY_VSLICK_DB="vslick.stu" ++ MY_VSLICK_DB="vslick.sta" ++ MY_VSLICK_DB_OLD="vslick.stu" + fi + # MacOS: Implement me! + fi +@@ -526,7 +530,9 @@ my_generate_usercpp_h() + MY_VER="0.0.0" + for subdir in "${MY_SLICKDIR_}/"*; + do +- if test -f "${subdir}/${MY_USERCPP_H}" -o -f "${subdir}/${MY_VSLICK_DB}"; then ++ if test -f "${subdir}/${MY_USERCPP_H}" \ ++ -o -f "${subdir}/${MY_VSLICK_DB}" \ ++ -o '(' -n "${MY_VSLICK_DB_OLD}" -a -f "${subdir}/${MY_VSLICK_DB_OLD}" ')'; then + MY_CUR_VER_NUM=0 + MY_CUR_VER=`echo "${subdir}" | ${MY_SED} -e 's,^.*/,,g'` + +@@ -561,6 +567,7 @@ my_generate_usercpp_h() + echo "Found SlickEdit v${MY_VER} preprocessor file: ${MY_USERCPP_H_FULL}" + else + echo "Failed to locate SlickEdit preprocessor file. You need to manually merge ${MY_USERCPP_H}." ++ echo "dbg: MY_SLICKDIR=${MY_SLICKDIR} MY_USERCPP_H_FULL=${MY_USERCPP_H_FULL}" + MY_USERCPP_H_FULL="" + fi + +@@ -717,6 +724,10 @@ EOF + #define RTASN1TYPE_STANDARD_PROTOTYPES_NO_GET_CORE(a_TypeNm, a_DeclMacro, a_ImplExtNm) int a_ImplExtNm##_Init(P##a_TypeNm pThis, PCRTASN1ALLOCATORVTABLE pAllocator); int a_ImplExtNm##_Clone(P##a_TypeNm pThis, PC##a_TypeNm) pSrc, PCRTASN1ALLOCATORVTABLE pAllocator); void a_ImplExtNm##_Delete(P##a_TypeNm pThis); int a_ImplExtNm##_Enum(P##a_TypeNm pThis, PFNRTASN1ENUMCALLBACK pfnCallback, uint32_t uDepth, void *pvUser); int a_ImplExtNm##_Compare(PC##a_TypeNm) pLeft, PC##a_TypeNm pRight); int a_ImplExtNm##_DecodeAsn1(PRTASN1CURSOR pCursor, uint32_t fFlags, P##a_TypeNm pThis, const char *pszErrorTag); int a_ImplExtNm##_CheckSanity(PC##a_TypeNm pThis, uint32_t fFlags, PRTERRINFO pErrInfo, const char *pszErrorTag) + #define RTASN1TYPE_STANDARD_PROTOTYPES(a_TypeNm, a_DeclMacro, a_ImplExtNm, a_Asn1CoreNm) inline PRTASN1CORE a_ImplExtNm##_GetAsn1Core(PC##a_TypeNm pThis) { return (PRTASN1CORE)&pThis->a_Asn1CoreNm; } inline bool a_ImplExtNm##_IsPresent(PC##a_TypeNm pThis) { return pThis && RTASN1CORE_IS_PRESENT(&pThis->a_Asn1CoreNm); } RTASN1TYPE_STANDARD_PROTOTYPES_NO_GET_CORE(a_TypeNm, a_DeclMacro, a_ImplExtNm) + ++#define RTLDRELF_NAME(name) rtldrELF64##name ++#define RTLDRELF_SUFF(name) name##64 ++#define RTLDRELF_MID(pre,suff) pre##64##suff ++ + #define BS3_DECL(type) type + #define BS3_DECL_CALLBACK(type) type + #define TMPL_NM(name) name##_mmm +--- a/include/iprt/asmdefs.mac ++++ b/include/iprt/asmdefs.mac +@@ -841,18 +841,18 @@ size NAME(%1 %+ _EndProc) 0 + ; is defined and RT_WITHOUT_NOCRT_WRAPPERS isn't. + ; + %macro RT_NOCRT_BEGINPROC 1 +-%ifdef RT_WITH_NOCRT_ALIASES +-BEGINPROC RT_NOCRT(%1) +-%ifdef ASM_FORMAT_ELF ++ %ifdef RT_WITH_NOCRT_ALIASES ++BEGINPROC_EXPORTED RT_NOCRT(%1) ++ %ifdef ASM_FORMAT_ELF + global NAME(%1) + weak NAME(%1) + NAME(%1): +-%else ++ %else + GLOBALNAME %1 +-%endif +-%else ; !RT_WITH_NOCRT_ALIASES +-BEGINPROC RT_NOCRT(%1) +-%endif ; !RT_WITH_NOCRT_ALIASES ++ %endif ++ %else ; !RT_WITH_NOCRT_ALIASES ++BEGINPROC_EXPORTED RT_NOCRT(%1) ++ %endif ; !RT_WITH_NOCRT_ALIASES + %endmacro ; RT_NOCRT_BEGINPROC + + %ifdef RT_WITH_NOCRT_ALIASES +--- a/src/VBox/Runtime/testcase/tstLdr-4.cpp ++++ b/src/VBox/Runtime/testcase/tstLdr-4.cpp +@@ -35,9 +35,9 @@ + #include <iprt/assert.h> + #include <iprt/param.h> + #include <iprt/path.h> +-#include <iprt/initterm.h> + #include <iprt/err.h> + #include <iprt/string.h> ++#include <iprt/test.h> + + #include <VBox/sup.h> + +@@ -45,8 +45,9 @@ + /********************************************************************************************************************************* + * Global Variables * + *********************************************************************************************************************************/ +-static SUPGLOBALINFOPAGE g_MyGip = { SUPGLOBALINFOPAGE_MAGIC, SUPGLOBALINFOPAGE_VERSION, SUPGIPMODE_INVARIANT_TSC, 42 }; +-static PSUPGLOBALINFOPAGE g_pMyGip = &g_MyGip; ++static RTTEST g_hTest; ++static SUPGLOBALINFOPAGE g_MyGip = { SUPGLOBALINFOPAGE_MAGIC, SUPGLOBALINFOPAGE_VERSION, SUPGIPMODE_INVARIANT_TSC, 42 }; ++static PSUPGLOBALINFOPAGE g_pMyGip = &g_MyGip; + + extern "C" DECLEXPORT(int) DisasmTest1(void); + +@@ -58,6 +59,60 @@ static DECLCALLBACK(int) testEnumSegment + " link=%RTptr LB %RTptr align=%RTptr fProt=%#x offFile=%RTfoff\n" + , *piSeg, pSeg->RVA, pSeg->cbMapped, pSeg->pszName, + pSeg->LinkAddress, pSeg->cb, pSeg->Alignment, pSeg->fProt, pSeg->offFile); ++ ++ if (pSeg->RVA != NIL_RTLDRADDR) ++ { ++ RTTESTI_CHECK(pSeg->cbMapped != NIL_RTLDRADDR); ++ RTTESTI_CHECK(pSeg->cbMapped >= pSeg->cb); ++ } ++ else ++ { ++ RTTESTI_CHECK(pSeg->cbMapped == NIL_RTLDRADDR); ++ } ++ ++ /* ++ * Do some address conversion tests: ++ */ ++ if (pSeg->cbMapped != NIL_RTLDRADDR) ++ { ++ /* RTLdrRvaToSegOffset: */ ++ uint32_t iSegConv = ~(uint32_t)42; ++ RTLDRADDR offSegConv = ~(RTLDRADDR)22; ++ int rc = RTLdrRvaToSegOffset(hLdrMod, pSeg->RVA, &iSegConv, &offSegConv); ++ if (RT_FAILURE(rc)) ++ RTTestIFailed("RTLdrRvaToSegOffset failed on Seg #%u / RVA %#RTptr: %Rrc", *piSeg, pSeg->RVA, rc); ++ else if (iSegConv != *piSeg || offSegConv != 0) ++ RTTestIFailed("RTLdrRvaToSegOffset on Seg #%u / RVA %#RTptr returned: iSegConv=%#x offSegConv=%RTptr, expected %#x and 0", ++ *piSeg, pSeg->RVA, iSegConv, offSegConv, *piSeg); ++ ++ /* RTLdrSegOffsetToRva: */ ++ RTLDRADDR uRvaConv = ~(RTLDRADDR)22; ++ rc = RTLdrSegOffsetToRva(hLdrMod, *piSeg, 0, &uRvaConv); ++ if (RT_FAILURE(rc)) ++ RTTestIFailed("RTLdrSegOffsetToRva failed on Seg #%u / off 0: %Rrc", *piSeg, rc); ++ else if (uRvaConv != pSeg->RVA) ++ RTTestIFailed("RTLdrSegOffsetToRva on Seg #%u / off 0 returned: %RTptr, expected %RTptr", *piSeg, uRvaConv, pSeg->RVA); ++ ++ /* RTLdrLinkAddressToRva: */ ++ uRvaConv = ~(RTLDRADDR)22; ++ rc = RTLdrLinkAddressToRva(hLdrMod, pSeg->LinkAddress, &uRvaConv); ++ if (RT_FAILURE(rc)) ++ RTTestIFailed("RTLdrLinkAddressToRva failed on Seg #%u / %RTptr: %Rrc", *piSeg, pSeg->LinkAddress, rc); ++ else if (uRvaConv != pSeg->RVA) ++ RTTestIFailed("RTLdrLinkAddressToRva on Seg #%u / %RTptr returned: %RTptr, expected %RTptr", ++ *piSeg, pSeg->LinkAddress, uRvaConv, pSeg->RVA); ++ ++ /* RTLdrLinkAddressToSegOffset: */ ++ iSegConv = ~(uint32_t)42; ++ offSegConv = ~(RTLDRADDR)22; ++ rc = RTLdrLinkAddressToSegOffset(hLdrMod, pSeg->LinkAddress, &iSegConv, &offSegConv); ++ if (RT_FAILURE(rc)) ++ RTTestIFailed("RTLdrLinkAddressToSegOffset failed on Seg #%u / %#RTptr: %Rrc", *piSeg, pSeg->LinkAddress, rc); ++ else if (iSegConv != *piSeg || offSegConv != 0) ++ RTTestIFailed("RTLdrLinkAddressToSegOffset on Seg #%u / %#RTptr returned: iSegConv=%#x offSegConv=%RTptr, expected %#x and 0", ++ *piSeg, pSeg->LinkAddress, iSegConv, offSegConv, *piSeg); ++ } ++ + *piSeg += 1; + RT_NOREF(hLdrMod); + return VINF_SUCCESS; +@@ -125,12 +180,12 @@ static DECLCALLBACK(int) testGetImport(R + * regions the for compare usage. The third is loaded into one + * and then relocated between the two and other locations a few times. + * +- * @returns number of errors. + * @param pszFilename The file to load the mess with. + */ +-static int testLdrOne(const char *pszFilename) ++static void testLdrOne(const char *pszFilename) + { +- int cErrors = 0; ++ RTTestSub(g_hTest, RTPathFilename(pszFilename)); ++ + size_t cbImage = 0; + struct Load + { +@@ -155,9 +210,8 @@ static int testLdrOne(const char *pszFil + rc = RTLdrOpen(pszFilename, 0, RTLDRARCH_WHATEVER, &aLoads[i].hLdrMod); + if (RT_FAILURE(rc)) + { +- RTPrintf("tstLdr-4: Failed to open '%s'/%d, rc=%Rrc. aborting test.\n", pszFilename, i, rc); ++ RTTestIFailed("tstLdr-4: Failed to open '%s'/%d, rc=%Rrc. aborting test.", pszFilename, i, rc); + Assert(aLoads[i].hLdrMod == NIL_RTLDRMOD); +- cErrors++; + break; + } + +@@ -165,8 +219,7 @@ static int testLdrOne(const char *pszFil + size_t cb = RTLdrSize(aLoads[i].hLdrMod); + if (cbImage && cb != cbImage) + { +- RTPrintf("tstLdr-4: Size mismatch '%s'/%d. aborting test.\n", pszFilename, i); +- cErrors++; ++ RTTestIFailed("tstLdr-4: Size mismatch '%s'/%d. aborting test.", pszFilename, i); + break; + } + aLoads[i].cbBits = cbImage = cb; +@@ -175,8 +228,7 @@ static int testLdrOne(const char *pszFil + aLoads[i].pvBits = RTMemExecAlloc(cb); + if (!aLoads[i].pvBits) + { +- RTPrintf("tstLdr-4: Out of memory '%s'/%d cbImage=%d. aborting test.\n", pszFilename, i, cbImage); +- cErrors++; ++ RTTestIFailed("Out of memory '%s'/%d cbImage=%d. aborting test.", pszFilename, i, cbImage); + break; + } + +@@ -184,8 +236,7 @@ static int testLdrOne(const char *pszFil + rc = RTLdrGetBits(aLoads[i].hLdrMod, aLoads[i].pvBits, (uintptr_t)aLoads[i].pvBits, testGetImport, NULL); + if (RT_FAILURE(rc)) + { +- RTPrintf("tstLdr-4: Failed to get bits for '%s'/%d, rc=%Rrc. aborting test\n", pszFilename, i, rc); +- cErrors++; ++ RTTestIFailed("Failed to get bits for '%s'/%d, rc=%Rrc. aborting test", pszFilename, i, rc); + break; + } + } +@@ -193,7 +244,7 @@ static int testLdrOne(const char *pszFil + /* + * Execute the code. + */ +- if (!cErrors) ++ if (!RTTestSubErrorCount(g_hTest)) + { + for (i = 0; i < RT_ELEMENTS(aLoads); i += 1) + { +@@ -209,22 +260,18 @@ static int testLdrOne(const char *pszFil + UINT32_MAX, "_DisasmTest1", &Value); + if (RT_FAILURE(rc)) + { +- RTPrintf("tstLdr-4: Failed to get symbol \"DisasmTest1\" from load #%d: %Rrc\n", i, rc); +- cErrors++; ++ RTTestIFailed("Failed to get symbol \"DisasmTest1\" from load #%d: %Rrc", i, rc); + break; + } + DECLCALLBACKPTR(int, pfnDisasmTest1)(void) = (DECLCALLBACKPTR(int, RT_NOTHING)(void))(uintptr_t)Value; /* eeeh. */ +- RTPrintf("tstLdr-4: pfnDisasmTest1=%p / add-symbol-file %s %#x\n", pfnDisasmTest1, pszFilename, aLoads[i].pvBits); ++ RTPrintf("tstLdr-4: pfnDisasmTest1=%p / add-symbol-file %s %#p\n", pfnDisasmTest1, pszFilename, aLoads[i].pvBits); + uint32_t iSeg = 0; + RTLdrEnumSegments(aLoads[i].hLdrMod, testEnumSegment, &iSeg); + + /* call the test function. */ + rc = pfnDisasmTest1(); + if (rc) +- { +- RTPrintf("tstLdr-4: load #%d Test1 -> %#x\n", i, rc); +- cErrors++; +- } ++ RTTestIFailed("load #%d Test1 -> %#x", i, rc); + + /* While we're here, check a couple of RTLdrQueryProp calls too */ + void *pvBits = aLoads[i].pvBits; +@@ -255,56 +302,42 @@ static int testLdrOne(const char *pszFil + { + rc = RTLdrClose(aLoads[i].hLdrMod); + if (RT_FAILURE(rc)) +- { +- RTPrintf("tstLdr-4: Failed to close '%s' i=%d, rc=%Rrc.\n", pszFilename, i, rc); +- cErrors++; +- } ++ RTTestIFailed("Failed to close '%s' i=%d, rc=%Rrc.", pszFilename, i, rc); + } + } + +- return cErrors; + } + + + +-int main(int argc, char **argv) ++int main() + { +- int cErrors = 0; +- RTR3InitExe(argc, &argv, 0); ++ RTEXITCODE rcExit = RTTestInitAndCreate("tstLdr-4", &g_hTest); ++ if (rcExit != RTEXITCODE_SUCCESS) ++ return rcExit; + + /* + * Sanity check. + */ + int rc = DisasmTest1(); +- if (rc) ++ if (rc == 0) + { +- RTPrintf("tstLdr-4: FATAL ERROR - DisasmTest1 is buggy: rc=%#x\n", rc); +- return 1; +- } ++ /* ++ * Execute the test. ++ */ ++ char szPath[RTPATH_MAX]; ++ rc = RTPathExecDir(szPath, sizeof(szPath) - sizeof("/tstLdrObjR0.r0")); ++ if (RT_SUCCESS(rc)) ++ { ++ strcat(szPath, "/tstLdrObjR0.r0"); + +- /* +- * Execute the test. +- */ +- char szPath[RTPATH_MAX]; +- rc = RTPathExecDir(szPath, sizeof(szPath) - sizeof("/tstLdrObjR0.r0")); +- if (RT_SUCCESS(rc)) +- { +- strcat(szPath, "/tstLdrObjR0.r0"); +- RTPrintf("tstLdr-4: TESTING '%s'...\n", szPath); +- cErrors += testLdrOne(szPath); ++ testLdrOne(szPath); ++ } ++ else ++ RTTestIFailed("RTPathExecDir -> %Rrc", rc); + } + else +- { +- RTPrintf("tstLdr-4: RTPathExecDir -> %Rrc\n", rc); +- cErrors++; +- } ++ RTTestIFailed("FATAL ERROR - DisasmTest1 is buggy: rc=%#x", rc); + +- /* +- * Test result summary. +- */ +- if (!cErrors) +- RTPrintf("tstLdr-4: SUCCESS\n"); +- else +- RTPrintf("tstLdr-4: FAILURE - %d errors\n", cErrors); +- return !!cErrors; ++ return RTTestSummaryAndDestroy(g_hTest); + } +--- a/include/iprt/formats/elf-common.h ++++ b/include/iprt/formats/elf-common.h +@@ -198,6 +198,12 @@ typedef struct { + #define PT_LOPROC 0x70000000 /* First processor-specific type. */ + #define PT_HIPROC 0x7fffffff /* Last processor-specific type. */ + ++#define PT_GNU_EH_FRAME 0x6474e550 /**< GNU/Linux -> .eh_frame_hdr */ ++#define PT_GNU_STACK 0x6474e551 /**< GNU/Linux -> stack prot (RWX or RW) */ ++#define PT_GNU_RELRO 0x6474e552 /**< GNU/Linux -> make RO after relocations */ ++#define PT_GNU_PROPERTY 0x6474e553 /**< GNU/Linux -> .note.gnu.property */ ++ ++ + /* Values for p_flags. */ + #define PF_X 0x1 /* Executable. */ + #define PF_W 0x2 /* Writable. */ +--- a/src/VBox/Runtime/common/ldr/ldrELF.cpp ++++ b/src/VBox/Runtime/common/ldr/ldrELF.cpp +@@ -51,9 +51,11 @@ + * Defined Constants And Macros * + *********************************************************************************************************************************/ + /** Finds an ELF symbol table string. */ +-#define ELF_STR(pHdrs, iStr) ((pHdrs)->pStr + (iStr)) ++#define ELF_STR(pHdrs, iStr) ((pHdrs)->Rel.pStr + (iStr)) ++/** Finds an ELF symbol table string. */ ++#define ELF_DYN_STR(pHdrs, iStr) ((pHdrs)->Dyn.pStr + (iStr)) + /** Finds an ELF section header string. */ +-#define ELF_SH_STR(pHdrs, iStr) ((pHdrs)->pShStr + (iStr)) ++#define ELF_SH_STR(pHdrs, iStr) ((pHdrs)->pShStr + (iStr)) + + + +@@ -62,6 +64,7 @@ + *********************************************************************************************************************************/ + #ifdef LOG_ENABLED + static const char *rtldrElfGetShdrType(uint32_t iType); ++static const char *rtldrElfGetPhdrType(uint32_t iType); + #endif + + +@@ -81,6 +84,7 @@ static const char *rtldrElfGetShdrType(u + + + #ifdef LOG_ENABLED ++ + /** + * Gets the section type. + * +@@ -91,23 +95,51 @@ static const char *rtldrElfGetShdrType(u + { + switch (iType) + { +- case SHT_NULL: return "SHT_NULL"; +- case SHT_PROGBITS: return "SHT_PROGBITS"; +- case SHT_SYMTAB: return "SHT_SYMTAB"; +- case SHT_STRTAB: return "SHT_STRTAB"; +- case SHT_RELA: return "SHT_RELA"; +- case SHT_HASH: return "SHT_HASH"; +- case SHT_DYNAMIC: return "SHT_DYNAMIC"; +- case SHT_NOTE: return "SHT_NOTE"; +- case SHT_NOBITS: return "SHT_NOBITS"; +- case SHT_REL: return "SHT_REL"; +- case SHT_SHLIB: return "SHT_SHLIB"; +- case SHT_DYNSYM: return "SHT_DYNSYM"; ++ RT_CASE_RET_STR(SHT_NULL); ++ RT_CASE_RET_STR(SHT_PROGBITS); ++ RT_CASE_RET_STR(SHT_SYMTAB); ++ RT_CASE_RET_STR(SHT_STRTAB); ++ RT_CASE_RET_STR(SHT_RELA); ++ RT_CASE_RET_STR(SHT_HASH); ++ RT_CASE_RET_STR(SHT_DYNAMIC); ++ RT_CASE_RET_STR(SHT_NOTE); ++ RT_CASE_RET_STR(SHT_NOBITS); ++ RT_CASE_RET_STR(SHT_REL); ++ RT_CASE_RET_STR(SHT_SHLIB); ++ RT_CASE_RET_STR(SHT_DYNSYM); + default: + return ""; + } + } +-#endif ++ ++/** ++ * Gets the program header type. ++ * ++ * @returns Pointer to read only string. ++ * @param iType The section type index. ++ */ ++static const char *rtldrElfGetPhdrType(uint32_t iType) ++{ ++ switch (iType) ++ { ++ RT_CASE_RET_STR(PT_NULL); ++ RT_CASE_RET_STR(PT_LOAD); ++ RT_CASE_RET_STR(PT_DYNAMIC); ++ RT_CASE_RET_STR(PT_INTERP); ++ RT_CASE_RET_STR(PT_NOTE); ++ RT_CASE_RET_STR(PT_SHLIB); ++ RT_CASE_RET_STR(PT_PHDR); ++ RT_CASE_RET_STR(PT_TLS); ++ RT_CASE_RET_STR(PT_GNU_EH_FRAME); ++ RT_CASE_RET_STR(PT_GNU_STACK); ++ RT_CASE_RET_STR(PT_GNU_RELRO); ++ RT_CASE_RET_STR(PT_GNU_PROPERTY); ++ default: ++ return ""; ++ } ++} ++ ++#endif /* LOG_ENABLED*/ + + + /** +@@ -124,8 +156,6 @@ DECLHIDDEN(int) rtldrELFOpen(PRTLDRREADE + { + const char *pszLogName = pReader->pfnLogName(pReader); NOREF(pszLogName); + +- RT_NOREF_PV(pErrInfo); /** @todo implement */ +- + /* + * Read the ident to decide if this is 32-bit or 64-bit + * and worth dealing with. +@@ -134,6 +164,7 @@ DECLHIDDEN(int) rtldrELFOpen(PRTLDRREADE + int rc = pReader->pfnRead(pReader, &e_ident, sizeof(e_ident), 0); + if (RT_FAILURE(rc)) + return rc; ++ + if ( e_ident[EI_MAG0] != ELFMAG0 + || e_ident[EI_MAG1] != ELFMAG1 + || e_ident[EI_MAG2] != ELFMAG2 +@@ -141,19 +172,17 @@ DECLHIDDEN(int) rtldrELFOpen(PRTLDRREADE + || ( e_ident[EI_CLASS] != ELFCLASS32 + && e_ident[EI_CLASS] != ELFCLASS64) + ) +- { +- Log(("RTLdrELF: %s: Unsupported/invalid ident %.*Rhxs\n", pszLogName, sizeof(e_ident), e_ident)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Unsupported/invalid ident %.*Rhxs", pszLogName, sizeof(e_ident), e_ident); ++ + if (e_ident[EI_DATA] != ELFDATA2LSB) +- { +- Log(("RTLdrELF: %s: ELF endian %x is unsupported\n", pszLogName, e_ident[EI_DATA])); +- return VERR_LDRELF_ODD_ENDIAN; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_LDRELF_ODD_ENDIAN, ++ "%s: ELF endian %x is unsupported", pszLogName, e_ident[EI_DATA]); ++ + if (e_ident[EI_CLASS] == ELFCLASS32) +- rc = rtldrELF32Open(pReader, fFlags, enmArch, phLdrMod); ++ rc = rtldrELF32Open(pReader, fFlags, enmArch, phLdrMod, pErrInfo); + else +- rc = rtldrELF64Open(pReader, fFlags, enmArch, phLdrMod); ++ rc = rtldrELF64Open(pReader, fFlags, enmArch, phLdrMod, pErrInfo); + return rc; + } + +--- a/src/VBox/Runtime/common/ldr/ldrELFRelocatable.cpp.h ++++ b/src/VBox/Runtime/common/ldr/ldrELFRelocatable.cpp.h +@@ -29,31 +29,37 @@ + * Defined Constants And Macros * + *******************************************************************************/ + #if ELF_MODE == 32 +-#define RTLDRELF_NAME(name) rtldrELF32##name +-#define RTLDRELF_SUFF(name) name##32 +-#define RTLDRELF_MID(pre,suff) pre##32##suff +-#define FMT_ELF_ADDR "%08RX32" +-#define FMT_ELF_HALF "%04RX16" +-#define FMT_ELF_OFF "%08RX32" +-#define FMT_ELF_SIZE "%08RX32" +-#define FMT_ELF_SWORD "%RI32" +-#define FMT_ELF_WORD "%08RX32" +-#define FMT_ELF_XWORD "%08RX32" +-#define FMT_ELF_SXWORD "%RI32" ++# define RTLDRELF_NAME(name) rtldrELF32##name ++# define RTLDRELF_SUFF(name) name##32 ++# define RTLDRELF_MID(pre,suff) pre##32##suff ++# define FMT_ELF_ADDR "%08RX32" ++# define FMT_ELF_ADDR7 "%07RX32" ++# define FMT_ELF_HALF "%04RX16" ++# define FMT_ELF_OFF "%08RX32" ++# define FMT_ELF_SIZE "%08RX32" ++# define FMT_ELF_SWORD "%RI32" ++# define FMT_ELF_WORD "%08RX32" ++# define FMT_ELF_XWORD "%08RX32" ++# define FMT_ELF_SXWORD "%RI32" ++# define Elf_Xword Elf32_Word ++# define Elf_Sxword Elf32_Sword + + #elif ELF_MODE == 64 +-#define RTLDRELF_NAME(name) rtldrELF64##name +-#define RTLDRELF_SUFF(name) name##64 +-#define RTLDRELF_MID(pre,suff) pre##64##suff +-#define FMT_ELF_ADDR "%016RX64" +-#define FMT_ELF_HALF "%04RX16" +-#define FMT_ELF_SHALF "%RI16" +-#define FMT_ELF_OFF "%016RX64" +-#define FMT_ELF_SIZE "%016RX64" +-#define FMT_ELF_SWORD "%RI32" +-#define FMT_ELF_WORD "%08RX32" +-#define FMT_ELF_XWORD "%016RX64" +-#define FMT_ELF_SXWORD "%RI64" ++# define RTLDRELF_NAME(name) rtldrELF64##name ++# define RTLDRELF_SUFF(name) name##64 ++# define RTLDRELF_MID(pre,suff) pre##64##suff ++# define FMT_ELF_ADDR "%016RX64" ++# define FMT_ELF_ADDR7 "%08RX64" ++# define FMT_ELF_HALF "%04RX16" ++# define FMT_ELF_SHALF "%RI16" ++# define FMT_ELF_OFF "%016RX64" ++# define FMT_ELF_SIZE "%016RX64" ++# define FMT_ELF_SWORD "%RI32" ++# define FMT_ELF_WORD "%08RX32" ++# define FMT_ELF_XWORD "%016RX64" ++# define FMT_ELF_SXWORD "%RI64" ++# define Elf_Xword Elf64_Xword ++# define Elf_Sxword Elf64_Sxword + #endif + + #define Elf_Ehdr RTLDRELF_MID(Elf,_Ehdr) +@@ -74,6 +80,9 @@ + #define RTLDRMODELF RTLDRELF_MID(RTLDRMODELF,RT_NOTHING) + #define PRTLDRMODELF RTLDRELF_MID(PRTLDRMODELF,RT_NOTHING) + ++#define RTLDRMODELFSHX RTLDRELF_MID(RTLDRMODELFSHX,RT_NOTHING) ++#define PRTLDRMODELFSHX RTLDRELF_MID(PRTLDRMODELFSHX,RT_NOTHING) ++ + #define ELF_R_SYM(info) RTLDRELF_MID(ELF,_R_SYM)(info) + #define ELF_R_TYPE(info) RTLDRELF_MID(ELF,_R_TYPE)(info) + #define ELF_R_INFO(sym, type) RTLDRELF_MID(ELF,_R_INFO)(sym, type) +@@ -86,6 +95,20 @@ + * Structures and Typedefs * + *******************************************************************************/ + /** ++ * Extra section info. ++ */ ++typedef struct RTLDRMODELFSHX ++{ ++ /** The corresponding program header. */ ++ uint16_t idxPhdr; ++ /** The corresponding dynamic section entry (address). */ ++ uint16_t idxDt; ++ /** The DT tag. */ ++ uint32_t uDtTag; ++} RTLDRMODELFSHX; ++typedef RTLDRMODELFSHX *PRTLDRMODELFSHX; ++ ++/** + * The ELF loader structure. + */ + typedef struct RTLDRMODELF +@@ -105,36 +128,82 @@ typedef struct RTLDRMODELF + /** Unmodified section headers (allocated after paShdrs, so no need to free). + * Not valid if the image is DONE. */ + Elf_Shdr const *paOrgShdrs; ++ /** Runs parallel to paShdrs and is part of the same allocation. */ ++ PRTLDRMODELFSHX paShdrExtras; ++ /** Base section number, either 1 or zero depending on whether we've ++ * re-used the NULL entry for .elf.headers in ET_EXEC/ET_DYN. */ ++ unsigned iFirstSect; ++ /** Set if the SHF_ALLOC section headers are in order of sh_addr. */ ++ bool fShdrInOrder; + /** The size of the loaded image. */ + size_t cbImage; + + /** The image base address if it's an EXEC or DYN image. */ + Elf_Addr LinkAddress; + +- /** The symbol section index. */ +- unsigned iSymSh; +- /** Number of symbols in the table. */ +- unsigned cSyms; +- /** Pointer to symbol table within RTLDRMODELF::pvBits. */ +- const Elf_Sym *paSyms; +- +- /** The string section index. */ +- unsigned iStrSh; +- /** Size of the string table. */ +- unsigned cbStr; +- /** Pointer to string table within RTLDRMODELF::pvBits. */ +- const char *pStr; ++ struct ++ { ++ /** The symbol section index. */ ++ unsigned iSymSh; ++ /** Number of symbols in the table. */ ++ unsigned cSyms; ++ /** Pointer to symbol table within RTLDRMODELF::pvBits. */ ++ const Elf_Sym *paSyms; ++ ++ /** The string section index. */ ++ unsigned iStrSh; ++ /** Size of the string table. */ ++ unsigned cbStr; ++ /** Pointer to string table within RTLDRMODELF::pvBits. */ ++ const char *pStr; ++ } Rel /**< Regular symbols and strings. */ ++ , Dyn /**< Dynamic symbols and strings. */; + +- /** Size of the section header string table. */ +- unsigned cbShStr; + /** Pointer to section header string table within RTLDRMODELF::pvBits. */ + const char *pShStr; ++ /** Size of the section header string table. */ ++ unsigned cbShStr; + + /** The '.eh_frame' section index. Zero if not searched for, ~0U if not found. */ + unsigned iShEhFrame; + /** The '.eh_frame_hdr' section index. Zero if not searched for, ~0U if not found. */ + unsigned iShEhFrameHdr; +-} RTLDRMODELF, *PRTLDRMODELF; ++ ++ /** The '.dynamic' / SHT_DYNAMIC section index. ~0U if not present. */ ++ unsigned iShDynamic; ++ /** Number of entries in paDynamic. */ ++ unsigned cDynamic; ++ /** The dynamic section (NULL for ET_REL). */ ++ Elf_Dyn *paDynamic; ++ /** Program headers (NULL for ET_REL). */ ++ Elf_Phdr *paPhdrs; ++ ++ /** Info extracted from PT_DYNAMIC and the program headers. */ ++ struct ++ { ++ /** DT_RELA/DT_REL. */ ++ Elf_Addr uPtrRelocs; ++ /** DT_RELASZ/DT_RELSZ. */ ++ Elf_Xword cbRelocs; ++ /** Non-zero if we've seen DT_RELAENT/DT_RELENT. */ ++ unsigned cbRelocEntry; ++ /** DT_RELA or DT_REL. */ ++ unsigned uRelocType; ++ /** The index of the section header matching DT_RELA/DT_REL. */ ++ unsigned idxShRelocs; ++ ++ /** DT_JMPREL. */ ++ Elf_Addr uPtrJmpRelocs; ++ /** DT_PLTRELSZ. */ ++ Elf_Xword cbJmpRelocs; ++ /** DT_RELA or DT_REL (if we've seen DT_PLTREL). */ ++ unsigned uJmpRelocType; ++ /** The index of the section header matching DT_JMPREL. */ ++ unsigned idxShJmpRelocs; ++ } DynInfo; ++} RTLDRMODELF; ++/** Pointer to an ELF module instance. */ ++typedef RTLDRMODELF *PRTLDRMODELF; + + + /** +@@ -154,11 +223,15 @@ static int RTLDRELF_NAME(MapBits)(PRTLDR + if (RT_SUCCESS(rc)) + { + const uint8_t *pu8 = (const uint8_t *)pModElf->pvBits; +- if (pModElf->iSymSh != ~0U) +- pModElf->paSyms = (const Elf_Sym *)(pu8 + pModElf->paShdrs[pModElf->iSymSh].sh_offset); +- if (pModElf->iStrSh != ~0U) +- pModElf->pStr = (const char *)(pu8 + pModElf->paShdrs[pModElf->iStrSh].sh_offset); +- pModElf->pShStr = (const char *)(pu8 + pModElf->paShdrs[pModElf->Ehdr.e_shstrndx].sh_offset); ++ if (pModElf->Rel.iSymSh != ~0U) ++ pModElf->Rel.paSyms = (const Elf_Sym *)(pu8 + pModElf->paShdrs[pModElf->Rel.iSymSh].sh_offset); ++ if (pModElf->Rel.iStrSh != ~0U) ++ pModElf->Rel.pStr = (const char *)(pu8 + pModElf->paShdrs[pModElf->Rel.iStrSh].sh_offset); ++ if (pModElf->Dyn.iSymSh != ~0U) ++ pModElf->Dyn.paSyms = (const Elf_Sym *)(pu8 + pModElf->paShdrs[pModElf->Dyn.iSymSh].sh_offset); ++ if (pModElf->Dyn.iStrSh != ~0U) ++ pModElf->Dyn.pStr = (const char *)(pu8 + pModElf->paShdrs[pModElf->Dyn.iStrSh].sh_offset); ++ pModElf->pShStr = (const char *)(pu8 + pModElf->paShdrs[pModElf->Ehdr.e_shstrndx].sh_offset); + + /* + * Verify that the ends of the string tables have a zero terminator +@@ -167,8 +240,12 @@ static int RTLDRELF_NAME(MapBits)(PRTLDR + * sh_offset and sh_size were verfied in RTLDRELF_NAME(ValidateSectionHeader)() already so they + * are safe to use. + */ +- AssertMsgStmt( pModElf->iStrSh == ~0U +- || pModElf->pStr[pModElf->paShdrs[pModElf->iStrSh].sh_size - 1] == '\0', ++ AssertMsgStmt( pModElf->Rel.iStrSh == ~0U ++ || pModElf->Rel.pStr[pModElf->paShdrs[pModElf->Rel.iStrSh].sh_size - 1] == '\0', ++ ("The string table is not zero terminated!\n"), ++ rc = VERR_LDRELF_UNTERMINATED_STRING_TAB); ++ AssertMsgStmt( pModElf->Dyn.iStrSh == ~0U ++ || pModElf->Dyn.pStr[pModElf->paShdrs[pModElf->Dyn.iStrSh].sh_size - 1] == '\0', + ("The string table is not zero terminated!\n"), + rc = VERR_LDRELF_UNTERMINATED_STRING_TAB); + AssertMsgStmt(pModElf->pShStr[pModElf->paShdrs[pModElf->Ehdr.e_shstrndx].sh_size - 1] == '\0', +@@ -180,10 +257,12 @@ static int RTLDRELF_NAME(MapBits)(PRTLDR + /* Unmap. */ + int rc2 = pModElf->Core.pReader->pfnUnmap(pModElf->Core.pReader, pModElf->pvBits); + AssertRC(rc2); +- pModElf->pvBits = NULL; +- pModElf->paSyms = NULL; +- pModElf->pStr = NULL; +- pModElf->pShStr = NULL; ++ pModElf->pvBits = NULL; ++ pModElf->Rel.paSyms = NULL; ++ pModElf->Rel.pStr = NULL; ++ pModElf->Dyn.paSyms = NULL; ++ pModElf->Dyn.pStr = NULL; ++ pModElf->pShStr = NULL; + } + } + return rc; +@@ -200,6 +279,101 @@ static int RTLDRELF_NAME(MapBits)(PRTLDR + * + */ + ++/** ++ * Get the symbol and symbol value. ++ * ++ * @returns iprt status code. ++ * @param pModElf The ELF loader module instance data. ++ * @param BaseAddr The base address which the module is being fixedup to. ++ * @param pfnGetImport The callback function to use to resolve imports (aka unresolved externals). ++ * @param pvUser User argument to pass to the callback. ++ * @param iSym The symbol to get. ++ * @param ppSym Where to store the symbol pointer on success. (read only) ++ * @param pSymValue Where to store the symbol value on success. ++ */ ++static int RTLDRELF_NAME(SymbolExecDyn)(PRTLDRMODELF pModElf, Elf_Addr BaseAddr, PFNRTLDRIMPORT pfnGetImport, void *pvUser, ++ Elf_Size iSym, const Elf_Sym **ppSym, Elf_Addr *pSymValue) ++{ ++ /* ++ * Validate and find the symbol. ++ */ ++ AssertMsgReturn(iSym < pModElf->Dyn.cSyms, ("iSym=%d is an invalid symbol index!\n", iSym), VERR_LDRELF_INVALID_SYMBOL_INDEX); ++ const Elf_Sym *pSym = &pModElf->Dyn.paSyms[iSym]; ++ *ppSym = pSym; ++ ++ AssertMsgReturn(pSym->st_name < pModElf->Dyn.cbStr, ++ ("iSym=%d st_name=%d str sh_size=%d\n", iSym, pSym->st_name, pModElf->Dyn.cbStr), ++ VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET); ++ const char * const pszName = pModElf->Dyn.pStr + pSym->st_name; ++ ++ /* ++ * Determine the symbol value. ++ * ++ * Symbols needs different treatment depending on which section their are in. ++ * Undefined and absolute symbols goes into special non-existing sections. ++ */ ++ switch (pSym->st_shndx) ++ { ++ /* ++ * Undefined symbol, needs resolving. ++ * ++ * Since ELF has no generic concept of importing from specific module (the OS/2 ELF format ++ * has but that's an OS extension and only applies to programs and dlls), we'll have to ask ++ * the resolver callback to do a global search. ++ */ ++ case SHN_UNDEF: ++ { ++ /* Try to resolve the symbol. */ ++ RTUINTPTR Value; ++ int rc = pfnGetImport(&pModElf->Core, "", pszName, ~0U, &Value, pvUser); ++ AssertMsgRCReturn(rc, ("Failed to resolve '%s' (iSym=" FMT_ELF_SIZE " rc=%Rrc\n", pszName, iSym, rc), rc); ++ ++ *pSymValue = (Elf_Addr)Value; ++ AssertMsgReturn((RTUINTPTR)*pSymValue == Value, ++ ("Symbol value overflowed! '%s' (iSym=" FMT_ELF_SIZE "\n", pszName, iSym), VERR_SYMBOL_VALUE_TOO_BIG); ++ ++ Log2(("rtldrELF: #%-3d - UNDEF " FMT_ELF_ADDR " '%s'\n", iSym, *pSymValue, pszName)); ++ break; ++ } ++ ++ /* ++ * Absolute symbols needs no fixing since they are, well, absolute. ++ */ ++ case SHN_ABS: ++ *pSymValue = pSym->st_value; ++ Log2(("rtldrELF: #%-3d - ABS " FMT_ELF_ADDR " '%s'\n", iSym, *pSymValue, pszName)); ++ break; ++ ++ /* ++ * All other symbols are addressed relative the image base in DYN and EXEC binaries. ++ */ ++ default: ++ AssertMsgReturn(pSym->st_shndx < pModElf->Ehdr.e_shnum, ++ ("iSym=%d st_shndx=%d e_shnum=%d pszName=%s\n", iSym, pSym->st_shndx, pModElf->Ehdr.e_shnum, pszName), ++ VERR_BAD_EXE_FORMAT); ++ *pSymValue = pSym->st_value + BaseAddr; ++ Log2(("rtldrELF: #%-3d - %5d " FMT_ELF_ADDR " '%s'\n", iSym, pSym->st_shndx, *pSymValue, pszName)); ++ break; ++ } ++ ++ return VINF_SUCCESS; ++} ++ ++ ++#if ELF_MODE == 32 ++/** Helper for RelocateSectionExecDyn. */ ++DECLINLINE(const Elf_Shdr *) RTLDRELF_NAME(RvaToSectionHeader)(PRTLDRMODELF pModElf, Elf_Addr uRva) ++{ ++ const Elf_Shdr * const pShdrFirst = pModElf->paShdrs; ++ const Elf_Shdr *pShdr = pShdrFirst + pModElf->Ehdr.e_shnum; ++ while (--pShdr != pShdrFirst) ++ if (uRva - pShdr->sh_addr /*rva*/ < pShdr->sh_size) ++ return pShdr; ++ AssertFailed(); ++ return pShdr; ++} ++#endif ++ + + /** + * Applies the fixups for a section in an executable image. +@@ -230,84 +404,106 @@ static int RTLDRELF_NAME(RelocateSection + * Iterate the relocations. + * The relocations are stored in an array of Elf32_Rel records and covers the entire relocation section. + */ ++#if ELF_MODE == 32 ++ const Elf_Shdr *pShdr = pModElf->paShdrs; + const Elf_Addr offDelta = BaseAddr - pModElf->LinkAddress; ++#endif + const Elf_Reloc *paRels = (const Elf_Reloc *)pvRelocs; +- const unsigned iRelMax = (unsigned)(cbRelocs / sizeof(paRels[0])); ++ const unsigned iRelMax = (unsigned)(cbRelocs / sizeof(paRels[0])); + AssertMsgReturn(iRelMax == cbRelocs / sizeof(paRels[0]), (FMT_ELF_SIZE "\n", cbRelocs / sizeof(paRels[0])), + VERR_IMAGE_TOO_BIG); + for (unsigned iRel = 0; iRel < iRelMax; iRel++) + { + /* +- * Skip R_XXX_NONE entries early to avoid confusion in the symbol +- * getter code. ++ * Apply fixups not taking a symbol (will 'continue' rather than 'break'). + */ ++ AssertMsgReturn(paRels[iRel].r_offset < cbSec, (FMT_ELF_ADDR " " FMT_ELF_SIZE "\n", paRels[iRel].r_offset, cbSec), ++ VERR_LDRELF_INVALID_RELOCATION_OFFSET); + #if ELF_MODE == 32 +- if (ELF_R_TYPE(paRels[iRel].r_info) == R_386_NONE) +- continue; +-#elif ELF_MODE == 64 +- if (ELF_R_TYPE(paRels[iRel].r_info) == R_X86_64_NONE) +- continue; ++ if (paRels[iRel].r_offset - pShdr->sh_addr /*rva*/ >= pShdr->sh_size) ++ pShdr = RTLDRELF_NAME(RvaToSectionHeader)(pModElf, paRels[iRel].r_offset); ++ static const Elf_Addr s_uZero = 0; ++ const Elf_Addr *pAddrR = RT_LIKELY(pShdr->sh_type != SHT_NOBITS) /* Where to read the addend. */ ++ ? (const Elf_Addr *)(pu8SecBaseR + paRels[iRel].r_offset - pShdr->sh_addr /*rva*/ ++ + pShdr->sh_offset) ++ : &s_uZero; + #endif +- +- /* +- * Validate and find the symbol, resolve undefined ones. +- */ +- Elf_Size iSym = ELF_R_SYM(paRels[iRel].r_info); +- if (iSym >= pModElf->cSyms) +- { +- AssertMsgFailed(("iSym=%d is an invalid symbol index!\n", iSym)); +- return VERR_LDRELF_INVALID_SYMBOL_INDEX; +- } +- const Elf_Sym *pSym = &pModElf->paSyms[iSym]; +- if (pSym->st_name >= pModElf->cbStr) ++ Elf_Addr *pAddrW = (Elf_Addr *)(pu8SecBaseW + paRels[iRel].r_offset); /* Where to write the fixup. */ ++ switch (ELF_R_TYPE(paRels[iRel].r_info)) + { +- AssertMsgFailed(("iSym=%d st_name=%d str sh_size=%d\n", iSym, pSym->st_name, pModElf->cbStr)); +- return VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET; +- } ++ /* ++ * Image relative (addend + base). ++ */ ++#if ELF_MODE == 32 ++ case R_386_RELATIVE: ++ { ++ const Elf_Addr Value = *pAddrR + BaseAddr; ++ *(uint32_t *)pAddrW = Value; ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_386_RELATIVE Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value)); ++ AssertCompile(sizeof(Value) == sizeof(uint32_t)); ++ continue; ++ } ++#elif ELF_MODE == 64 ++ case R_X86_64_RELATIVE: ++ { ++ const Elf_Addr Value = paRels[iRel].r_addend + BaseAddr; ++ *(uint64_t *)pAddrW = (uint64_t)Value; ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_RELATIVE Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value)); ++ AssertCompile(sizeof(Value) == sizeof(uint64_t)); ++ continue; ++ } ++#endif + +- Elf_Addr SymValue = 0; +- if (pSym->st_shndx == SHN_UNDEF) +- { +- /* Try to resolve the symbol. */ +- const char *pszName = ELF_STR(pModElf, pSym->st_name); +- RTUINTPTR ExtValue; +- int rc = pfnGetImport(&pModElf->Core, "", pszName, ~0U, &ExtValue, pvUser); +- AssertMsgRCReturn(rc, ("Failed to resolve '%s' rc=%Rrc\n", pszName, rc), rc); +- SymValue = (Elf_Addr)ExtValue; +- AssertMsgReturn((RTUINTPTR)SymValue == ExtValue, ("Symbol value overflowed! '%s'\n", pszName), +- VERR_SYMBOL_VALUE_TOO_BIG); +- Log2(("rtldrELF: #%-3d - UNDEF " FMT_ELF_ADDR " '%s'\n", iSym, SymValue, pszName)); +- } +- else +- { +- AssertMsgReturn(pSym->st_shndx < pModElf->Ehdr.e_shnum || pSym->st_shndx == SHN_ABS, ("%#x\n", pSym->st_shndx), +- VERR_LDRELF_INVALID_RELOCATION_OFFSET); +-#if ELF_MODE == 64 +- SymValue = pSym->st_value; ++ /* ++ * R_XXX_NONE. ++ */ ++#if ELF_MODE == 32 ++ case R_386_NONE: ++#elif ELF_MODE == 64 ++ case R_X86_64_NONE: + #endif ++ continue; + } + +-#if ELF_MODE == 64 +- /* Calc the value (indexes checked above; assumes SHN_UNDEF == 0). */ +- Elf_Addr Value; +- if (pSym->st_shndx < pModElf->Ehdr.e_shnum) +- Value = SymValue + offDelta; +- else /* SHN_ABS: */ +- Value = SymValue + paRels[iRel].r_addend; +-#endif ++ /* ++ * Validate and find the symbol, resolve undefined ones. ++ */ ++ const Elf_Sym *pSym = NULL; /* shut up gcc */ ++ Elf_Addr SymValue = 0; /* shut up gcc-4 */ ++ int rc = RTLDRELF_NAME(SymbolExecDyn)(pModElf, BaseAddr, pfnGetImport, pvUser, ELF_R_SYM(paRels[iRel].r_info), &pSym, &SymValue); ++ if (RT_FAILURE(rc)) ++ return rc; + + /* + * Apply the fixup. + */ +- AssertMsgReturn(paRels[iRel].r_offset < cbSec, (FMT_ELF_ADDR " " FMT_ELF_SIZE "\n", paRels[iRel].r_offset, cbSec), VERR_LDRELF_INVALID_RELOCATION_OFFSET); +-#if ELF_MODE == 32 +- const Elf_Addr *pAddrR = (const Elf_Addr *)(pu8SecBaseR + paRels[iRel].r_offset); /* Where to read the addend. */ +-#endif +- Elf_Addr *pAddrW = (Elf_Addr *)(pu8SecBaseW + paRels[iRel].r_offset); /* Where to write the fixup. */ + switch (ELF_R_TYPE(paRels[iRel].r_info)) + { + #if ELF_MODE == 32 + /* ++ * GOT/PLT. ++ */ ++ case R_386_GLOB_DAT: ++ { ++ *(uint32_t *)pAddrW = (uint32_t)SymValue; ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_386_GLOB_DAT Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, SymValue)); ++ AssertCompile(sizeof(SymValue) == sizeof(uint32_t)); ++ break; ++ } ++ ++ case R_386_JMP_SLOT: ++ { ++ *(uint32_t *)pAddrW = (uint32_t)SymValue; ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_386_JMP_SLOT Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, SymValue)); ++ AssertCompile(sizeof(SymValue) == sizeof(uint32_t)); ++ break; ++ } ++ ++ /* + * Absolute addressing. + */ + case R_386_32: +@@ -322,7 +518,8 @@ static int RTLDRELF_NAME(RelocateSection + else + AssertFailedReturn(VERR_LDR_GENERAL_FAILURE); /** @todo SHN_COMMON */ + *(uint32_t *)pAddrW = Value; +- Log4((FMT_ELF_ADDR": R_386_32 Value=" FMT_ELF_ADDR "\n", SecAddr + paRels[iRel].r_offset + BaseAddr, Value)); ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_386_32 Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value)); + break; + } + +@@ -344,20 +541,42 @@ static int RTLDRELF_NAME(RelocateSection + } + else + AssertFailedReturn(VERR_LDR_GENERAL_FAILURE); /** @todo SHN_COMMON */ +- Log4((FMT_ELF_ADDR": R_386_PC32 Value=" FMT_ELF_ADDR "\n", SecAddr + paRels[iRel].r_offset + BaseAddr, Value)); ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_386_PC32 Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value)); + break; + } + + #elif ELF_MODE == 64 ++ /* ++ * GOT/PLT. ++ */ ++ case R_X86_64_GLOB_DAT: ++ { ++ *(uint64_t *)pAddrW = (uint64_t)SymValue; ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_GLOB_DAT Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, SymValue)); ++ AssertCompile(sizeof(SymValue) == sizeof(uint64_t)); ++ break; ++ } ++ ++ case R_X86_64_JMP_SLOT: ++ { ++ *(uint64_t *)pAddrW = (uint64_t)SymValue; ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_JMP_SLOT Value=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, SymValue)); ++ AssertCompile(sizeof(SymValue) == sizeof(uint64_t)); ++ break; ++ } + + /* +- * Absolute addressing ++ * Absolute addressing. + */ + case R_X86_64_64: + { ++ const Elf_Addr Value = SymValue + paRels[iRel].r_addend; + *(uint64_t *)pAddrW = Value; +- Log4((FMT_ELF_ADDR": R_X86_64_64 Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", +- SecAddr + paRels[iRel].r_offset + BaseAddr, Value, SymValue)); ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_64 Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value, SymValue)); + break; + } + +@@ -366,9 +585,10 @@ static int RTLDRELF_NAME(RelocateSection + */ + case R_X86_64_32: + { ++ const Elf_Addr Value = SymValue + paRels[iRel].r_addend; + *(uint32_t *)pAddrW = (uint32_t)Value; +- Log4((FMT_ELF_ADDR": R_X86_64_32 Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", +- SecAddr + paRels[iRel].r_offset + BaseAddr, Value, SymValue)); ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_32 Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value, SymValue)); + AssertMsgReturn((Elf_Addr)*(uint32_t *)pAddrW == SymValue, ("Value=" FMT_ELF_ADDR "\n", SymValue), + VERR_SYMBOL_VALUE_TOO_BIG); + break; +@@ -379,9 +599,10 @@ static int RTLDRELF_NAME(RelocateSection + */ + case R_X86_64_32S: + { ++ const Elf_Addr Value = SymValue + paRels[iRel].r_addend; + *(int32_t *)pAddrW = (int32_t)Value; +- Log4((FMT_ELF_ADDR": R_X86_64_32S Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", +- SecAddr + paRels[iRel].r_offset + BaseAddr, Value, SymValue)); ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_32S Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", ++ SecAddr + paRels[iRel].r_offset + BaseAddr, paRels[iRel].r_offset, Value, SymValue)); + AssertMsgReturn((Elf_Addr)*(int32_t *)pAddrW == Value, ("Value=" FMT_ELF_ADDR "\n", Value), VERR_SYMBOL_VALUE_TOO_BIG); /** @todo check the sign-extending here. */ + break; + } +@@ -390,18 +611,17 @@ static int RTLDRELF_NAME(RelocateSection + * PC relative addressing. + */ + case R_X86_64_PC32: +- case R_X86_64_PLT32: /* binutils commit 451875b4f976a527395e9303224c7881b65e12ed feature/regression. */ + { +- const Elf_Addr SourceAddr = SecAddr + paRels[iRel].r_offset + BaseAddr; /* Where the source really is. */ +- Value -= SourceAddr; ++ const Elf_Addr SourceAddr = SecAddr + paRels[iRel].r_offset + BaseAddr; /* Where the source really is. */ ++ const Elf_Addr Value = SymValue + paRels[iRel].r_addend - SourceAddr; + *(int32_t *)pAddrW = (int32_t)Value; +- Log4((FMT_ELF_ADDR": R_X86_64_PC32 Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", +- SourceAddr, Value, SymValue)); ++ Log4((FMT_ELF_ADDR "/" FMT_ELF_ADDR7 ": R_X86_64_PC32 Value=" FMT_ELF_ADDR " SymValue=" FMT_ELF_ADDR "\n", ++ SourceAddr, paRels[iRel].r_offset, Value, SymValue)); + AssertMsgReturn((Elf_Addr)*(int32_t *)pAddrW == Value, ("Value=" FMT_ELF_ADDR "\n", Value), VERR_SYMBOL_VALUE_TOO_BIG); /** @todo check the sign-extending here. */ + break; + } +-#endif + ++#endif + default: + AssertMsgFailed(("Unknown relocation type: %d (iRel=%d iRelMax=%d)\n", + ELF_R_TYPE(paRels[iRel].r_info), iRel, iRelMax)); +@@ -442,19 +662,13 @@ static int RTLDRELF_NAME(Symbol)(PRTLDRM + /* + * Validate and find the symbol. + */ +- if (iSym >= pModElf->cSyms) +- { +- AssertMsgFailed(("iSym=%d is an invalid symbol index!\n", iSym)); +- return VERR_LDRELF_INVALID_SYMBOL_INDEX; +- } +- const Elf_Sym *pSym = &pModElf->paSyms[iSym]; ++ AssertMsgReturn(iSym < pModElf->Rel.cSyms, ("iSym=%d is an invalid symbol index!\n", iSym), VERR_LDRELF_INVALID_SYMBOL_INDEX); ++ const Elf_Sym *pSym = &pModElf->Rel.paSyms[iSym]; + *ppSym = pSym; + +- if (pSym->st_name >= pModElf->cbStr) +- { +- AssertMsgFailed(("iSym=%d st_name=%d str sh_size=%d\n", iSym, pSym->st_name, pModElf->cbStr)); +- return VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET; +- } ++ AssertMsgReturn(pSym->st_name < pModElf->Rel.cbStr, ++ ("iSym=%d st_name=%d str sh_size=%d\n", iSym, pSym->st_name, pModElf->Rel.cbStr), ++ VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET); + const char *pszName = ELF_STR(pModElf, pSym->st_name); + + /* +@@ -469,7 +683,7 @@ static int RTLDRELF_NAME(Symbol)(PRTLDRM + * Undefined symbol, needs resolving. + * + * Since ELF has no generic concept of importing from specific module (the OS/2 ELF format +- * has but that's a OS extension and only applies to programs and dlls), we'll have to ask ++ * has but that's an OS extension and only applies to programs and dlls), we'll have to ask + * the resolver callback to do a global search. + */ + case SHN_UNDEF: +@@ -477,17 +691,12 @@ static int RTLDRELF_NAME(Symbol)(PRTLDRM + /* Try to resolve the symbol. */ + RTUINTPTR Value; + int rc = pfnGetImport(&pModElf->Core, "", pszName, ~0U, &Value, pvUser); +- if (RT_FAILURE(rc)) +- { +- AssertMsgFailed(("Failed to resolve '%s' rc=%Rrc\n", pszName, rc)); +- return rc; +- } ++ AssertMsgRCReturn(rc, ("Failed to resolve '%s' (iSym=" FMT_ELF_SIZE " rc=%Rrc\n", pszName, iSym, rc), rc); + *pSymValue = (Elf_Addr)Value; +- if ((RTUINTPTR)*pSymValue != Value) +- { +- AssertMsgFailed(("Symbol value overflowed! '%s'\n", pszName)); +- return VERR_SYMBOL_VALUE_TOO_BIG; +- } ++ ++ AssertMsgReturn((RTUINTPTR)*pSymValue == Value, ++ ("Symbol value overflowed! '%s' (iSym=" FMT_ELF_SIZE ")\n", pszName, iSym), ++ VERR_SYMBOL_VALUE_TOO_BIG); + + Log2(("rtldrELF: #%-3d - UNDEF " FMT_ELF_ADDR " '%s'\n", iSym, *pSymValue, pszName)); + break; +@@ -536,9 +745,9 @@ static int RTLDRELF_NAME(Symbol)(PRTLDRM + * @param pvRelocs Pointer to where we read the relocations from. + * @param cbRelocs Size of the relocations. + */ +-static int RTLDRELF_NAME(RelocateSection)(PRTLDRMODELF pModElf, Elf_Addr BaseAddr, PFNRTLDRIMPORT pfnGetImport, void *pvUser, +- const Elf_Addr SecAddr, Elf_Size cbSec, const uint8_t *pu8SecBaseR, uint8_t *pu8SecBaseW, +- const void *pvRelocs, Elf_Size cbRelocs) ++static int RTLDRELF_NAME(RelocateSectionRel)(PRTLDRMODELF pModElf, Elf_Addr BaseAddr, PFNRTLDRIMPORT pfnGetImport, void *pvUser, ++ const Elf_Addr SecAddr, Elf_Size cbSec, const uint8_t *pu8SecBaseR, ++ uint8_t *pu8SecBaseW, const void *pvRelocs, Elf_Size cbRelocs) + { + #if ELF_MODE != 32 + NOREF(pu8SecBaseR); +@@ -702,6 +911,18 @@ static DECLCALLBACK(int) RTLDRELF_NAME(C + pModElf->paShdrs = NULL; + } + ++ if (pModElf->paPhdrs) ++ { ++ RTMemFree(pModElf->paPhdrs); ++ pModElf->paPhdrs = NULL; ++ } ++ ++ if (pModElf->paDynamic) ++ { ++ RTMemFree(pModElf->paDynamic); ++ pModElf->paDynamic = NULL; ++ } ++ + if (pModElf->pvBits) + { + pModElf->Core.pReader->pfnUnmap(pModElf->Core.pReader, pModElf->pvBits); +@@ -721,9 +942,9 @@ static DECLCALLBACK(int) RTLDRELF_NAME(D + } + + +-/** @copydoc RTLDROPS::EnumSymbols */ +-static DECLCALLBACK(int) RTLDRELF_NAME(EnumSymbols)(PRTLDRMODINTERNAL pMod, unsigned fFlags, const void *pvBits, RTUINTPTR BaseAddress, +- PFNRTLDRENUMSYMS pfnCallback, void *pvUser) ++/** @copydoc RTLDROPS::pfnEnumSymbols */ ++static DECLCALLBACK(int) RTLDRELF_NAME(EnumSymbols)(PRTLDRMODINTERNAL pMod, unsigned fFlags, const void *pvBits, ++ RTUINTPTR BaseAddress, PFNRTLDRENUMSYMS pfnCallback, void *pvUser) + { + PRTLDRMODELF pModElf = (PRTLDRMODELF)pMod; + NOREF(pvBits); +@@ -744,8 +965,20 @@ static DECLCALLBACK(int) RTLDRELF_NAME(E + /* + * Enumerate the symbol table. + */ +- const Elf_Sym *paSyms = pModElf->paSyms; +- unsigned cSyms = pModElf->cSyms; ++ const Elf_Sym *paSyms = pModElf->Rel.paSyms; ++ unsigned cSyms = pModElf->Rel.cSyms; ++ const char *pszzStr = pModElf->Rel.pStr; ++ unsigned cbStr = pModElf->Rel.cbStr; ++ if ( ( !(fFlags & RTLDR_ENUM_SYMBOL_FLAGS_ALL) ++ && pModElf->Dyn.cSyms > 0) ++ || cSyms == 0) ++ { ++ paSyms = pModElf->Dyn.paSyms; ++ cSyms = pModElf->Dyn.cSyms; ++ pszzStr = pModElf->Dyn.pStr; ++ cbStr = pModElf->Dyn.cbStr; ++ } ++ + for (unsigned iSym = 1; iSym < cSyms; iSym++) + { + /* +@@ -774,22 +1007,21 @@ static DECLCALLBACK(int) RTLDRELF_NAME(E + return VERR_BAD_EXE_FORMAT; + } + +- AssertMsgReturn(paSyms[iSym].st_name < pModElf->cbStr, ++ AssertMsgReturn(paSyms[iSym].st_name < cbStr, + ("String outside string table! iSym=%d paSyms[iSym].st_name=%#x\n", iSym, paSyms[iSym].st_name), + VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET); ++ const char * const pszName = pszzStr + paSyms[iSym].st_name; + +- const char *pszName = ELF_STR(pModElf, paSyms[iSym].st_name); + /* String termination was already checked when the string table was mapped. */ +- if ( (pszName && *pszName) ++ if ( *pszName != '\0' + && ( (fFlags & RTLDR_ENUM_SYMBOL_FLAGS_ALL) +- || ELF_ST_BIND(paSyms[iSym].st_info) == STB_GLOBAL) +- ) ++ || ELF_ST_BIND(paSyms[iSym].st_info) == STB_GLOBAL) ) + { + /* + * Call back. + */ + AssertMsgReturn(Value == (RTUINTPTR)Value, (FMT_ELF_ADDR "\n", Value), VERR_SYMBOL_VALUE_TOO_BIG); +- rc = pfnCallback(pMod, pszName, ~0U, (RTUINTPTR)Value, pvUser); ++ rc = pfnCallback(pMod, pszName, iSym, (RTUINTPTR)Value, pvUser); + if (rc) + return rc; + } +@@ -820,13 +1052,11 @@ static DECLCALLBACK(int) RTLDRELF_NAME(G + switch (pModElf->Ehdr.e_type) + { + case ET_REL: ++ case ET_DYN: + break; + case ET_EXEC: + Log(("RTLdrELF: %s: Executable images are not supported yet!\n", pModElf->Core.pReader->pfnLogName(pModElf->Core.pReader))); + return VERR_LDRELF_EXEC; +- case ET_DYN: +- Log(("RTLdrELF: %s: Dynamic images are not supported yet!\n", pModElf->Core.pReader->pfnLogName(pModElf->Core.pReader))); +- return VERR_LDRELF_DYN; + default: AssertFailedReturn(VERR_BAD_EXE_FORMAT); + } + +@@ -885,13 +1115,11 @@ static DECLCALLBACK(int) RTLDRELF_NAME(R + switch (pModElf->Ehdr.e_type) + { + case ET_REL: ++ case ET_DYN: + break; + case ET_EXEC: + Log(("RTLdrELF: %s: Executable images are not supported yet!\n", pszLogName)); + return VERR_LDRELF_EXEC; +- case ET_DYN: +- Log(("RTLdrELF: %s: Dynamic images are not supported yet!\n", pszLogName)); +- return VERR_LDRELF_DYN; + default: AssertFailedReturn(VERR_BAD_EXE_FORMAT); + } + +@@ -910,8 +1138,9 @@ static DECLCALLBACK(int) RTLDRELF_NAME(R + + /* + * Iterate the sections looking for interesting SHT_REL[A] sections. +- * SHT_REL[A] sections have the section index of the section they contain fixups +- * for in the sh_info member. ++ * ++ * In ET_REL files the SHT_REL[A] sections have the section index of ++ * the section they contain fixups for in the sh_info member. + */ + const Elf_Shdr *paShdrs = pModElf->paShdrs; + Log2(("rtLdrElf: %s: Fixing up image\n", pszLogName)); +@@ -928,36 +1157,37 @@ static DECLCALLBACK(int) RTLDRELF_NAME(R + if (pShdrRel->sh_type != SHT_RELA) + #endif + continue; +- if (pShdrRel->sh_info >= pModElf->Ehdr.e_shnum) +- continue; +- const Elf_Shdr *pShdr = &paShdrs[pShdrRel->sh_info]; /* the section to fixup. */ +- if (!(pShdr->sh_flags & SHF_ALLOC)) +- continue; +- +- /* +- * Relocate the section. +- */ +- Log2(("rtldrELF: %s: Relocation records for #%d [%s] (sh_info=%d sh_link=%d) found in #%d [%s] (sh_info=%d sh_link=%d)\n", +- pszLogName, (int)pShdrRel->sh_info, ELF_SH_STR(pModElf, pShdr->sh_name), (int)pShdr->sh_info, (int)pShdr->sh_link, +- iShdr, ELF_SH_STR(pModElf, pShdrRel->sh_name), (int)pShdrRel->sh_info, (int)pShdrRel->sh_link)); +- +- /** @todo Make RelocateSection a function pointer so we can select the one corresponding to the machine when opening the image. */ + if (pModElf->Ehdr.e_type == ET_REL) +- rc = RTLDRELF_NAME(RelocateSection)(pModElf, BaseAddr, pfnGetImport, pvUser, +- pShdr->sh_addr, +- pShdr->sh_size, +- (const uint8_t *)pModElf->pvBits + pShdr->sh_offset, +- (uint8_t *)pvBits + pShdr->sh_addr, +- (const uint8_t *)pModElf->pvBits + pShdrRel->sh_offset, +- pShdrRel->sh_size); ++ { ++ if (pShdrRel->sh_info >= pModElf->Ehdr.e_shnum) ++ continue; ++ const Elf_Shdr *pShdr = &paShdrs[pShdrRel->sh_info]; /* the section to fixup. */ ++ if (!(pShdr->sh_flags & SHF_ALLOC)) ++ continue; ++ ++ /* ++ * Relocate the section. ++ */ ++ Log2(("rtldrELF: %s: Relocation records for #%d [%s] (sh_info=%d sh_link=%d) found in #%d [%s] (sh_info=%d sh_link=%d)\n", ++ pszLogName, (int)pShdrRel->sh_info, ELF_SH_STR(pModElf, pShdr->sh_name), (int)pShdr->sh_info, (int)pShdr->sh_link, ++ iShdr, ELF_SH_STR(pModElf, pShdrRel->sh_name), (int)pShdrRel->sh_info, (int)pShdrRel->sh_link)); ++ ++ rc = RTLDRELF_NAME(RelocateSectionRel)(pModElf, BaseAddr, pfnGetImport, pvUser, ++ pShdr->sh_addr, ++ pShdr->sh_size, ++ (const uint8_t *)pModElf->pvBits + pShdr->sh_offset, ++ (uint8_t *)pvBits + pShdr->sh_addr, ++ (const uint8_t *)pModElf->pvBits + pShdrRel->sh_offset, ++ pShdrRel->sh_size); ++ } + else + rc = RTLDRELF_NAME(RelocateSectionExecDyn)(pModElf, BaseAddr, pfnGetImport, pvUser, +- pShdr->sh_addr, +- pShdr->sh_size, +- (const uint8_t *)pModElf->pvBits + pShdr->sh_offset, +- (uint8_t *)pvBits + pShdr->sh_addr, ++ 0, (Elf_Size)pModElf->cbImage, ++ (const uint8_t *)pModElf->pvBits /** @todo file offset ?? */, ++ (uint8_t *)pvBits, + (const uint8_t *)pModElf->pvBits + pShdrRel->sh_offset, + pShdrRel->sh_size); ++ + if (RT_FAILURE(rc)) + return rc; + } +@@ -1016,11 +1246,20 @@ static DECLCALLBACK(int) RTLDRELF_NAME(G + /* + * Calc all kinds of pointers before we start iterating the symbol table. + */ +- const Elf_Sym *paSyms = pModElf->paSyms; +- unsigned cSyms = pModElf->cSyms; ++ const Elf_Sym *paSyms = pModElf->Rel.paSyms; ++ unsigned cSyms = pModElf->Rel.cSyms; ++ const char *pszzStr = pModElf->Rel.pStr; ++ unsigned cbStr = pModElf->Rel.cbStr; ++ if (pModElf->Dyn.cSyms > 0) ++ { ++ paSyms = pModElf->Dyn.paSyms; ++ cSyms = pModElf->Dyn.cSyms; ++ pszzStr = pModElf->Dyn.pStr; ++ cbStr = pModElf->Dyn.cbStr; ++ } ++ + if (iOrdinal == UINT32_MAX) + { +- const char *pStr = pModElf->pStr; + for (unsigned iSym = 1; iSym < cSyms; iSym++) + { + /* Undefined symbols are not exports, they are imports. */ +@@ -1029,18 +1268,13 @@ static DECLCALLBACK(int) RTLDRELF_NAME(G + || ELF_ST_BIND(paSyms[iSym].st_info) == STB_WEAK)) + { + /* Validate the name string and try match with it. */ +- if (paSyms[iSym].st_name < pModElf->cbStr) +- { +- if (!strcmp(pszSymbol, pStr + paSyms[iSym].st_name)) +- { +- /* matched! */ +- return RTLDRELF_NAME(ReturnSymbol)(pModElf, &paSyms[iSym], uBaseAddr, pValue); +- } +- } +- else ++ AssertMsgReturn(paSyms[iSym].st_name < cbStr, ++ ("String outside string table! iSym=%d paSyms[iSym].st_name=%#x\n", iSym, paSyms[iSym].st_name), ++ VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET); ++ if (!strcmp(pszSymbol, pszzStr + paSyms[iSym].st_name)) + { +- AssertMsgFailed(("String outside string table! iSym=%d paSyms[iSym].st_name=%#x\n", iSym, paSyms[iSym].st_name)); +- return VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET; ++ /* matched! */ ++ return RTLDRELF_NAME(ReturnSymbol)(pModElf, &paSyms[iSym], uBaseAddr, pValue); + } + } + } +@@ -1127,23 +1361,47 @@ static DECLCALLBACK(int) RTLDRELF_NAME(E + + + /** +- * Helper that locates the first allocated section. ++ * Locate the next allocated section by RVA (sh_addr). ++ * ++ * This is a helper for EnumSegments and SegOffsetToRva. + * + * @returns Pointer to the section header if found, NULL if none. +- * @param pShdr The section header to start searching at. +- * @param cLeft The number of section headers left to search. Can be 0. ++ * @param pModElf The module instance. ++ * @param iShdrCur The current section header. + */ +-static const Elf_Shdr *RTLDRELF_NAME(GetFirstAllocatedSection)(const Elf_Shdr *pShdr, unsigned cLeft) ++static const Elf_Shdr *RTLDRELF_NAME(GetNextAllocatedSection)(PRTLDRMODELF pModElf, unsigned iShdrCur) + { +- while (cLeft-- > 0) ++ unsigned const cShdrs = pModElf->Ehdr.e_shnum; ++ const Elf_Shdr * const paShdrs = pModElf->paShdrs; ++ if (pModElf->fShdrInOrder) ++ { ++ for (unsigned iShdr = iShdrCur + 1; iShdr < cShdrs; iShdr++) ++ if (paShdrs[iShdr].sh_flags & SHF_ALLOC) ++ return &paShdrs[iShdr]; ++ } ++ else + { +- if (pShdr->sh_flags & SHF_ALLOC) +- return pShdr; +- pShdr++; ++ Elf_Addr const uEndCur = paShdrs[iShdrCur].sh_addr + paShdrs[iShdrCur].sh_size; ++ Elf_Addr offBest = ~(Elf_Addr)0; ++ unsigned iBest = cShdrs; ++ for (unsigned iShdr = pModElf->iFirstSect; iShdr < cShdrs; iShdr++) ++ if ((paShdrs[iShdr].sh_flags & SHF_ALLOC) && iShdr != iShdrCur) ++ { ++ Elf_Addr const offDelta = paShdrs[iShdr].sh_addr - uEndCur; ++ if ( offDelta < offBest ++ && paShdrs[iShdr].sh_addr >= uEndCur) ++ { ++ offBest = offDelta; ++ iBest = iShdr; ++ } ++ } ++ if (iBest < cShdrs) ++ return &paShdrs[iBest]; + } + return NULL; + } + ++ + /** @copydoc RTLDROPS::pfnEnumSegments. */ + static DECLCALLBACK(int) RTLDRELF_NAME(EnumSegments)(PRTLDRMODINTERNAL pMod, PFNRTLDRENUMSEGS pfnCallback, void *pvUser) + { +@@ -1163,15 +1421,23 @@ static DECLCALLBACK(int) RTLDRELF_NAME(E + Elf_Addr uPrevMappedRva = 0; + const Elf_Shdr *paShdrs = pModElf->paShdrs; + const Elf_Shdr *paOrgShdrs = pModElf->paOrgShdrs; +- for (unsigned iShdr = 1; iShdr < pModElf->Ehdr.e_shnum; iShdr++) ++ for (unsigned iShdr = pModElf->iFirstSect; iShdr < pModElf->Ehdr.e_shnum; iShdr++) + { + RTLDRSEG Seg; +- Seg.pszName = ELF_SH_STR(pModElf, paShdrs[iShdr].sh_name); +- Seg.cchName = (uint32_t)strlen(Seg.pszName); +- if (Seg.cchName == 0) ++ if (iShdr != 0) ++ { ++ Seg.pszName = ELF_SH_STR(pModElf, paShdrs[iShdr].sh_name); ++ Seg.cchName = (uint32_t)strlen(Seg.pszName); ++ if (Seg.cchName == 0) ++ { ++ Seg.pszName = szName; ++ Seg.cchName = (uint32_t)RTStrPrintf(szName, sizeof(szName), "UnamedSect%02u", iShdr); ++ } ++ } ++ else + { +- Seg.pszName = szName; +- Seg.cchName = (uint32_t)RTStrPrintf(szName, sizeof(szName), "UnamedSect%02u", iShdr); ++ Seg.pszName = ".elf.headers"; ++ Seg.cchName = 12; + } + Seg.SelFlat = 0; + Seg.Sel16bit = 0; +@@ -1187,14 +1453,11 @@ static DECLCALLBACK(int) RTLDRELF_NAME(E + { + Seg.LinkAddress = paOrgShdrs[iShdr].sh_addr; + Seg.RVA = paShdrs[iShdr].sh_addr; +- const Elf_Shdr *pShdr2 = RTLDRELF_NAME(GetFirstAllocatedSection)(&paShdrs[iShdr + 1], +- pModElf->Ehdr.e_shnum - iShdr - 1); +- if ( pShdr2 +- && pShdr2->sh_addr >= paShdrs[iShdr].sh_addr +- && Seg.RVA >= uPrevMappedRva) ++ const Elf_Shdr *pShdr2 = RTLDRELF_NAME(GetNextAllocatedSection)(pModElf, iShdr); ++ if (pShdr2) + Seg.cbMapped = pShdr2->sh_addr - paShdrs[iShdr].sh_addr; + else +- Seg.cbMapped = RT_MAX(paShdrs[iShdr].sh_size, paShdrs[iShdr].sh_addralign); ++ Seg.cbMapped = pModElf->cbImage - paShdrs[iShdr].sh_addr; + uPrevMappedRva = Seg.RVA; + } + else +@@ -1230,10 +1493,11 @@ static DECLCALLBACK(int) RTLDRELF_NAME(L + PRTLDRMODELF pModElf = (PRTLDRMODELF)pMod; + + const Elf_Shdr *pShdrEnd = NULL; +- unsigned cLeft = pModElf->Ehdr.e_shnum - 1; +- const Elf_Shdr *pShdr = &pModElf->paOrgShdrs[cLeft]; ++ unsigned cLeft = pModElf->Ehdr.e_shnum - pModElf->iFirstSect; ++ const Elf_Shdr *pShdr = &pModElf->paOrgShdrs[pModElf->Ehdr.e_shnum]; + while (cLeft-- > 0) + { ++ pShdr--; + if (pShdr->sh_flags & SHF_ALLOC) + { + RTLDRADDR offSeg = LinkAddress - pShdr->sh_addr; +@@ -1246,13 +1510,12 @@ static DECLCALLBACK(int) RTLDRELF_NAME(L + if (offSeg == pShdr->sh_size) + pShdrEnd = pShdr; + } +- pShdr--; + } + + if (pShdrEnd) + { + *poffSeg = pShdrEnd->sh_size; +- *piSeg = pShdrEnd - pModElf->paOrgShdrs - 1; ++ *piSeg = pShdrEnd - pModElf->paOrgShdrs - pModElf->iFirstSect; + return VINF_SUCCESS; + } + +@@ -1268,7 +1531,7 @@ static DECLCALLBACK(int) RTLDRELF_NAME(L + RTLDRADDR offSeg; + int rc = RTLDRELF_NAME(LinkAddressToSegOffset)(pMod, LinkAddress, &iSeg, &offSeg); + if (RT_SUCCESS(rc)) +- *pRva = pModElf->paShdrs[iSeg + 1].sh_addr + offSeg; ++ *pRva = pModElf->paShdrs[iSeg + pModElf->iFirstSect].sh_addr + offSeg; + return rc; + } + +@@ -1278,14 +1541,13 @@ static DECLCALLBACK(int) RTLDRELF_NAME(S + PRTLDRADDR pRva) + { + PRTLDRMODELF pModElf = (PRTLDRMODELF)pMod; +- if (iSeg >= pModElf->Ehdr.e_shnum - 1U) ++ if (iSeg >= pModElf->Ehdr.e_shnum - pModElf->iFirstSect) + return VERR_LDR_INVALID_SEG_OFFSET; + +- iSeg++; /* skip section 0 */ ++ iSeg += pModElf->iFirstSect; /* skip section 0 if not used */ + if (offSeg > pModElf->paShdrs[iSeg].sh_size) + { +- const Elf_Shdr *pShdr2 = RTLDRELF_NAME(GetFirstAllocatedSection)(&pModElf->paShdrs[iSeg + 1], +- pModElf->Ehdr.e_shnum - iSeg - 1); ++ const Elf_Shdr *pShdr2 = RTLDRELF_NAME(GetNextAllocatedSection)(pModElf, iSeg); + if ( !pShdr2 + || offSeg > (pShdr2->sh_addr - pModElf->paShdrs[iSeg].sh_addr)) + return VERR_LDR_INVALID_SEG_OFFSET; +@@ -1303,13 +1565,13 @@ static DECLCALLBACK(int) RTLDRELF_NAME(S + static DECLCALLBACK(int) RTLDRELF_NAME(RvaToSegOffset)(PRTLDRMODINTERNAL pMod, RTLDRADDR Rva, + uint32_t *piSeg, PRTLDRADDR poffSeg) + { +- PRTLDRMODELF pModElf = (PRTLDRMODELF)pMod; +- ++ PRTLDRMODELF pModElf = (PRTLDRMODELF)pMod; + Elf_Addr PrevAddr = 0; +- unsigned cLeft = pModElf->Ehdr.e_shnum - 1; +- const Elf_Shdr *pShdr = &pModElf->paShdrs[cLeft]; ++ unsigned cLeft = pModElf->Ehdr.e_shnum - pModElf->iFirstSect; ++ const Elf_Shdr *pShdr = &pModElf->paShdrs[pModElf->Ehdr.e_shnum]; + while (cLeft-- > 0) + { ++ pShdr--; + if (pShdr->sh_flags & SHF_ALLOC) + { + Elf_Addr cbSeg = PrevAddr ? PrevAddr - pShdr->sh_addr : pShdr->sh_size; +@@ -1322,7 +1584,6 @@ static DECLCALLBACK(int) RTLDRELF_NAME(R + } + PrevAddr = pShdr->sh_addr; + } +- pShdr--; + } + + return VERR_LDR_INVALID_RVA; +@@ -1413,14 +1674,14 @@ static DECLCALLBACK(int) RTLDRELF_NAME(R + * Apply the relocations. + */ + if (pThis->Ehdr.e_type == ET_REL) +- rc = RTLDRELF_NAME(RelocateSection)(pThis, pThis->LinkAddress, +- RTLDRELF_NAME(GetImportStubCallback), NULL /*pvUser*/, +- pThis->paShdrs[iDbgInfo].sh_addr, +- pThis->paShdrs[iDbgInfo].sh_size, +- (const uint8_t *)pvBuf, +- (uint8_t *)pvBuf, +- pbRelocs, +- pThis->paShdrs[iRelocs].sh_size); ++ rc = RTLDRELF_NAME(RelocateSectionRel)(pThis, pThis->LinkAddress, ++ RTLDRELF_NAME(GetImportStubCallback), NULL /*pvUser*/, ++ pThis->paShdrs[iDbgInfo].sh_addr, ++ pThis->paShdrs[iDbgInfo].sh_size, ++ (const uint8_t *)pvBuf, ++ (uint8_t *)pvBuf, ++ pbRelocs, ++ pThis->paShdrs[iRelocs].sh_size); + else + rc = RTLDRELF_NAME(RelocateSectionExecDyn)(pThis, pThis->LinkAddress, + RTLDRELF_NAME(GetImportStubCallback), NULL /*pvUser*/, +@@ -1562,11 +1823,13 @@ static RTLDROPS RTLDRELF_MID(s_rtldrElf, + * + * @returns iprt status code. + * @param pEhdr Pointer to the ELF header. +- * @param pszLogName The log name. + * @param cbRawImage The size of the raw image. ++ * @param pszLogName The log name. ++ * @param penmArch Where to return the architecture. ++ * @param pErrInfo Where to return extended error info. Optional. + */ +-static int RTLDRELF_NAME(ValidateElfHeader)(const Elf_Ehdr *pEhdr, const char *pszLogName, uint64_t cbRawImage, +- PRTLDRARCH penmArch) ++static int RTLDRELF_NAME(ValidateElfHeader)(const Elf_Ehdr *pEhdr, uint64_t cbRawImage, const char *pszLogName, ++ PRTLDRARCH penmArch, PRTERRINFO pErrInfo) + { + Log3(("RTLdrELF: e_ident: %.*Rhxs\n" + "RTLdrELF: e_type: " FMT_ELF_HALF "\n" +@@ -1588,48 +1851,31 @@ static int RTLDRELF_NAME(ValidateElfHead + if ( pEhdr->e_ident[EI_MAG0] != ELFMAG0 + || pEhdr->e_ident[EI_MAG1] != ELFMAG1 + || pEhdr->e_ident[EI_MAG2] != ELFMAG2 +- || pEhdr->e_ident[EI_MAG3] != ELFMAG3 +- ) +- { +- Log(("RTLdrELF: %s: Invalid ELF magic (%.*Rhxs)\n", pszLogName, sizeof(pEhdr->e_ident), pEhdr->e_ident)); NOREF(pszLogName); +- return VERR_BAD_EXE_FORMAT; +- } ++ || pEhdr->e_ident[EI_MAG3] != ELFMAG3) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Invalid ELF magic (%.*Rhxs)", pszLogName, sizeof(pEhdr->e_ident), pEhdr->e_ident); + if (pEhdr->e_ident[EI_CLASS] != RTLDRELF_SUFF(ELFCLASS)) +- { +- Log(("RTLdrELF: %s: Invalid ELF class (%.*Rhxs)\n", pszLogName, sizeof(pEhdr->e_ident), pEhdr->e_ident)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Invalid ELF class (%.*Rhxs)", pszLogName, sizeof(pEhdr->e_ident), pEhdr->e_ident); + if (pEhdr->e_ident[EI_DATA] != ELFDATA2LSB) +- { +- Log(("RTLdrELF: %s: ELF endian %x is unsupported\n", pszLogName, pEhdr->e_ident[EI_DATA])); +- return VERR_LDRELF_ODD_ENDIAN; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_LDRELF_ODD_ENDIAN, ++ "%s: ELF endian %x is unsupported", pszLogName, pEhdr->e_ident[EI_DATA]); + if (pEhdr->e_version != EV_CURRENT) +- { +- Log(("RTLdrELF: %s: ELF version %x is unsupported\n", pszLogName, pEhdr->e_version)); +- return VERR_LDRELF_VERSION; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_LDRELF_VERSION, ++ "%s: ELF version %x is unsupported", pszLogName, pEhdr->e_version); + + if (sizeof(Elf_Ehdr) != pEhdr->e_ehsize) +- { +- Log(("RTLdrELF: %s: Elf header e_ehsize is %d expected %d!\n", +- pszLogName, pEhdr->e_ehsize, sizeof(Elf_Ehdr))); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Elf header e_ehsize is %d expected %d!", pszLogName, pEhdr->e_ehsize, sizeof(Elf_Ehdr)); + if ( sizeof(Elf_Phdr) != pEhdr->e_phentsize +- && ( pEhdr->e_phnum != 0 +- || pEhdr->e_type == ET_DYN)) +- { +- Log(("RTLdrELF: %s: Elf header e_phentsize is %d expected %d!\n", +- pszLogName, pEhdr->e_phentsize, sizeof(Elf_Phdr))); +- return VERR_BAD_EXE_FORMAT; +- } ++ && ( pEhdr->e_phnum != 0 ++ || pEhdr->e_type == ET_DYN ++ || pEhdr->e_type == ET_EXEC)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Elf header e_phentsize is %d expected %d!", ++ pszLogName, pEhdr->e_phentsize, sizeof(Elf_Phdr)); + if (sizeof(Elf_Shdr) != pEhdr->e_shentsize) +- { +- Log(("RTLdrELF: %s: Elf header e_shentsize is %d expected %d!\n", +- pszLogName, pEhdr->e_shentsize, sizeof(Elf_Shdr))); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Elf header e_shentsize is %d expected %d!", ++ pszLogName, pEhdr->e_shentsize, sizeof(Elf_Shdr)); + + switch (pEhdr->e_type) + { +@@ -1638,8 +1884,8 @@ static int RTLDRELF_NAME(ValidateElfHead + case ET_DYN: + break; + default: +- Log(("RTLdrELF: %s: image type %#x is not supported!\n", pszLogName, pEhdr->e_type)); +- return VERR_BAD_EXE_FORMAT; ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: image type %#x is not supported!", ++ pszLogName, pEhdr->e_type); + } + + switch (pEhdr->e_machine) +@@ -1655,52 +1901,43 @@ static int RTLDRELF_NAME(ValidateElfHead + break; + #endif + default: +- Log(("RTLdrELF: %s: machine type %u is not supported!\n", pszLogName, pEhdr->e_machine)); +- return VERR_LDRELF_MACHINE; ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_LDRELF_MACHINE, ++ "%s: machine type %u is not supported!", pszLogName, pEhdr->e_machine); + } + + if ( pEhdr->e_phoff < pEhdr->e_ehsize + && !(pEhdr->e_phoff && pEhdr->e_phnum) + && pEhdr->e_phnum) +- { +- Log(("RTLdrELF: %s: The program headers overlap with the ELF header! e_phoff=" FMT_ELF_OFF "\n", +- pszLogName, pEhdr->e_phoff)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: The program headers overlap with the ELF header! e_phoff=" FMT_ELF_OFF, ++ pszLogName, pEhdr->e_phoff); + if ( pEhdr->e_phoff + pEhdr->e_phnum * pEhdr->e_phentsize > cbRawImage + || pEhdr->e_phoff + pEhdr->e_phnum * pEhdr->e_phentsize < pEhdr->e_phoff) +- { +- Log(("RTLdrELF: %s: The program headers extends beyond the file! e_phoff=" FMT_ELF_OFF " e_phnum=" FMT_ELF_HALF "\n", +- pszLogName, pEhdr->e_phoff, pEhdr->e_phnum)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: The program headers extends beyond the file! e_phoff=" FMT_ELF_OFF " e_phnum=" FMT_ELF_HALF, ++ pszLogName, pEhdr->e_phoff, pEhdr->e_phnum); + + + if ( pEhdr->e_shoff < pEhdr->e_ehsize + && !(pEhdr->e_shoff && pEhdr->e_shnum)) +- { +- Log(("RTLdrELF: %s: The section headers overlap with the ELF header! e_shoff=" FMT_ELF_OFF "\n", +- pszLogName, pEhdr->e_shoff)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: The section headers overlap with the ELF header! e_shoff=" FMT_ELF_OFF, ++ pszLogName, pEhdr->e_shoff); + if ( pEhdr->e_shoff + pEhdr->e_shnum * pEhdr->e_shentsize > cbRawImage + || pEhdr->e_shoff + pEhdr->e_shnum * pEhdr->e_shentsize < pEhdr->e_shoff) +- { +- Log(("RTLdrELF: %s: The section headers extends beyond the file! e_shoff=" FMT_ELF_OFF " e_shnum=" FMT_ELF_HALF "\n", +- pszLogName, pEhdr->e_shoff, pEhdr->e_shnum)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: The section headers extends beyond the file! e_shoff=" FMT_ELF_OFF " e_shnum=" FMT_ELF_HALF, ++ pszLogName, pEhdr->e_shoff, pEhdr->e_shnum); + + if (pEhdr->e_shstrndx == 0 || pEhdr->e_shstrndx > pEhdr->e_shnum) +- { +- Log(("RTLdrELF: %s: The section headers string table is out of bounds! e_shstrndx=" FMT_ELF_HALF " e_shnum=" FMT_ELF_HALF "\n", +- pszLogName, pEhdr->e_shstrndx, pEhdr->e_shnum)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: The section headers string table is out of bounds! e_shstrndx=" FMT_ELF_HALF " e_shnum=" FMT_ELF_HALF, ++ pszLogName, pEhdr->e_shstrndx, pEhdr->e_shnum); + + return VINF_SUCCESS; + } + ++ + /** + * Gets the section header name. + * +@@ -1741,10 +1978,12 @@ const char *RTLDRELF_NAME(GetSHdrName)(P + * @param pModElf Pointer to the module structure. + * @param iShdr The index of section header which should be validated. + * The section headers are found in the pModElf->paShdrs array. +- * @param pszLogName The log name. + * @param cbRawImage The size of the raw image. ++ * @param pszLogName The log name. ++ * @param pErrInfo Where to return extended error info. Optional. + */ +-static int RTLDRELF_NAME(ValidateSectionHeader)(PRTLDRMODELF pModElf, unsigned iShdr, const char *pszLogName, uint64_t cbRawImage) ++static int RTLDRELF_NAME(ValidateSectionHeader)(PRTLDRMODELF pModElf, unsigned iShdr, uint64_t cbRawImage, ++ const char *pszLogName, PRTERRINFO pErrInfo) + { + const Elf_Shdr *pShdr = &pModElf->paShdrs[iShdr]; + char szSectionName[80]; NOREF(szSectionName); +@@ -1776,37 +2015,29 @@ static int RTLDRELF_NAME(ValidateSection + || pShdr->sh_link != SHN_UNDEF + || pShdr->sh_addralign != 0 + || pShdr->sh_entsize != 0 ) +- { +- Log(("RTLdrELF: %s: Bad #0 section: %.*Rhxs\n", pszLogName, sizeof(*pShdr), pShdr )); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Bad #0 section: %.*Rhxs", pszLogName, sizeof(*pShdr), pShdr); + return VINF_SUCCESS; + } + + if (pShdr->sh_name >= pModElf->cbShStr) +- { +- Log(("RTLdrELF: %s: Shdr #%d: sh_name (%d) is beyond the end of the section header string table (%d)!\n", +- pszLogName, iShdr, pShdr->sh_name, pModElf->cbShStr)); NOREF(pszLogName); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Shdr #%d: sh_name (%d) is beyond the end of the section header string table (%d)!", ++ pszLogName, iShdr, pShdr->sh_name, pModElf->cbShStr); + + if (pShdr->sh_link >= pModElf->Ehdr.e_shnum) +- { +- Log(("RTLdrELF: %s: Shdr #%d: sh_link (%d) is beyond the end of the section table (%d)!\n", +- pszLogName, iShdr, pShdr->sh_link, pModElf->Ehdr.e_shnum)); NOREF(pszLogName); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Shdr #%d: sh_link (%d) is beyond the end of the section table (%d)!", ++ pszLogName, iShdr, pShdr->sh_link, pModElf->Ehdr.e_shnum); + + switch (pShdr->sh_type) + { + /** @todo find specs and check up which sh_info fields indicates section table entries */ + case 12301230: + if (pShdr->sh_info >= pModElf->Ehdr.e_shnum) +- { +- Log(("RTLdrELF: %s: Shdr #%d: sh_info (%d) is beyond the end of the section table (%d)!\n", +- pszLogName, iShdr, pShdr->sh_link, pModElf->Ehdr.e_shnum)); +- return VERR_BAD_EXE_FORMAT; +- } ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Shdr #%d: sh_info (%d) is beyond the end of the section table (%d)!", ++ pszLogName, iShdr, pShdr->sh_link, pModElf->Ehdr.e_shnum); + break; + + case SHT_NULL: +@@ -1840,18 +2071,740 @@ static int RTLDRELF_NAME(ValidateSection + uint64_t offEnd = pShdr->sh_offset + pShdr->sh_size; + if ( offEnd > cbRawImage + || offEnd < (uint64_t)pShdr->sh_offset) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Shdr #%d: sh_offset (" FMT_ELF_OFF ") + sh_size (" FMT_ELF_XWORD " = %RX64) is beyond the end of the file (%RX64)!", ++ pszLogName, iShdr, pShdr->sh_offset, pShdr->sh_size, offEnd, cbRawImage); ++ if (pShdr->sh_offset < sizeof(Elf_Ehdr)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Shdr #%d: sh_offset (" FMT_ELF_OFF ") + sh_size (" FMT_ELF_XWORD ") is starting in the ELF header!", ++ pszLogName, iShdr, pShdr->sh_offset, pShdr->sh_size); ++ } ++ ++ return VINF_SUCCESS; ++} ++ ++ ++/** ++ * Process the section headers. ++ * ++ * @returns iprt status code. ++ * @param pModElf Pointer to the module structure. ++ * @param paShdrs The section headers. ++ * @param cbRawImage The size of the raw image. ++ * @param pszLogName The log name. ++ * @param pErrInfo Where to return extended error info. Optional. ++ */ ++static int RTLDRELF_NAME(ValidateAndProcessSectionHeaders)(PRTLDRMODELF pModElf, Elf_Shdr *paShdrs, uint64_t cbRawImage, ++ const char *pszLogName, PRTERRINFO pErrInfo) ++{ ++ Elf_Addr uNextAddr = 0; ++ for (unsigned i = 0; i < pModElf->Ehdr.e_shnum; i++) ++ { ++ int rc = RTLDRELF_NAME(ValidateSectionHeader)(pModElf, i, cbRawImage, pszLogName, pErrInfo); ++ if (RT_FAILURE(rc)) ++ return rc; ++ ++ /* ++ * We're looking for symbol tables. ++ */ ++ if (paShdrs[i].sh_type == SHT_SYMTAB) + { +- Log(("RTLdrELF: %s: Shdr #%d: sh_offset (" FMT_ELF_OFF ") + sh_size (" FMT_ELF_XWORD " = %RX64) is beyond the end of the file (%RX64)!\n", +- pszLogName, iShdr, pShdr->sh_offset, pShdr->sh_size, offEnd, cbRawImage)); +- return VERR_BAD_EXE_FORMAT; ++ if (pModElf->Rel.iSymSh != ~0U) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_LDRELF_MULTIPLE_SYMTABS, ++ "%s: Multiple symbol tabs! iSymSh=%d i=%d", pszLogName, pModElf->Rel.iSymSh, i); ++ pModElf->Rel.iSymSh = i; ++ pModElf->Rel.cSyms = (unsigned)(paShdrs[i].sh_size / sizeof(Elf_Sym)); ++ AssertBreakStmt(pModElf->Rel.cSyms == paShdrs[i].sh_size / sizeof(Elf_Sym), rc = VERR_IMAGE_TOO_BIG); ++ pModElf->Rel.iStrSh = paShdrs[i].sh_link; ++ pModElf->Rel.cbStr = (unsigned)paShdrs[pModElf->Rel.iStrSh].sh_size; ++ AssertBreakStmt(pModElf->Rel.cbStr == paShdrs[pModElf->Rel.iStrSh].sh_size, rc = VERR_IMAGE_TOO_BIG); ++ } ++ else if (paShdrs[i].sh_type == SHT_DYNSYM) ++ { ++ if (pModElf->Dyn.iSymSh != ~0U) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_LDRELF_MULTIPLE_SYMTABS, ++ "%s: Multiple dynamic symbol tabs! iSymSh=%d i=%d", pszLogName, pModElf->Dyn.iSymSh, i); ++ if (pModElf->Ehdr.e_type != ET_DYN && pModElf->Ehdr.e_type != ET_EXEC) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Unexpected SHT_DYNSYM (i=%d) for e_type=%d", pszLogName, i, pModElf->Ehdr.e_type); ++ pModElf->Dyn.iSymSh = i; ++ pModElf->Dyn.cSyms = (unsigned)(paShdrs[i].sh_size / sizeof(Elf_Sym)); ++ AssertBreakStmt(pModElf->Dyn.cSyms == paShdrs[i].sh_size / sizeof(Elf_Sym), rc = VERR_IMAGE_TOO_BIG); ++ pModElf->Dyn.iStrSh = paShdrs[i].sh_link; ++ pModElf->Dyn.cbStr = (unsigned)paShdrs[pModElf->Dyn.iStrSh].sh_size; ++ AssertBreakStmt(pModElf->Dyn.cbStr == paShdrs[pModElf->Dyn.iStrSh].sh_size, rc = VERR_IMAGE_TOO_BIG); + } +- if (pShdr->sh_offset < sizeof(Elf_Ehdr)) ++ /* ++ * We're also look for the dynamic section. ++ */ ++ else if (paShdrs[i].sh_type == SHT_DYNAMIC) ++ { ++ if (pModElf->iShDynamic != ~0U) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Multiple dynamic sections! iShDynamic=%d i=%d", ++ pszLogName, pModElf->iShDynamic, i); ++ if (pModElf->Ehdr.e_type != ET_DYN && pModElf->Ehdr.e_type != ET_EXEC) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Unexpected SHT_DYNAMIC (i=%d) for e_type=%d", pszLogName, i, pModElf->Ehdr.e_type); ++ if (paShdrs[i].sh_entsize != sizeof(Elf_Dyn)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: SHT_DYNAMIC (i=%d) sh_entsize=" FMT_ELF_XWORD ", expected %#zx", ++ pszLogName, i, paShdrs[i].sh_entsize, sizeof(Elf_Dyn)); ++ pModElf->iShDynamic = i; ++ Elf_Xword const cDynamic = paShdrs[i].sh_size / sizeof(Elf_Dyn); ++ if (cDynamic > _64K || cDynamic < 2) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: SHT_DYNAMIC (i=%d) sh_size=" FMT_ELF_XWORD " is out of range (2..64K)", ++ pszLogName, i, paShdrs[i].sh_size); ++ pModElf->cDynamic = (unsigned)cDynamic; ++ } ++ ++ /* ++ * Special checks for the section string table. ++ */ ++ if (i == pModElf->Ehdr.e_shstrndx) + { +- Log(("RTLdrELF: %s: Shdr #%d: sh_offset (" FMT_ELF_OFF ") + sh_size (" FMT_ELF_XWORD ") is starting in the ELF header!\n", +- pszLogName, iShdr, pShdr->sh_offset, pShdr->sh_size)); +- return VERR_BAD_EXE_FORMAT; ++ if (paShdrs[i].sh_type != SHT_STRTAB) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Section header string table is not a SHT_STRTAB: %#x", ++ pszLogName, paShdrs[i].sh_type); ++ if (paShdrs[i].sh_size == 0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Section header string table is empty", pszLogName); + } ++ ++ /* ++ * Kluge for the .data..percpu segment in 64-bit linux kernels. ++ */ ++ if (paShdrs[i].sh_flags & SHF_ALLOC) ++ { ++ if ( paShdrs[i].sh_addr == 0 ++ && paShdrs[i].sh_addr < uNextAddr) ++ { ++ Elf_Addr uAddr = RT_ALIGN_T(uNextAddr, paShdrs[i].sh_addralign, Elf_Addr); ++ Log(("RTLdrElf: Out of order section #%d; adjusting sh_addr from " FMT_ELF_ADDR " to " FMT_ELF_ADDR "\n", ++ i, paShdrs[i].sh_addr, uAddr)); ++ paShdrs[i].sh_addr = uAddr; ++ } ++ uNextAddr = paShdrs[i].sh_addr + paShdrs[i].sh_size; ++ } ++ } /* for each section header */ ++ ++ return VINF_SUCCESS; ++} ++ ++ ++/** ++ * Process the section headers. ++ * ++ * @returns iprt status code. ++ * @param pModElf Pointer to the module structure. ++ * @param paShdrs The section headers. ++ * @param cbRawImage The size of the raw image. ++ * @param pszLogName The log name. ++ * @param pErrInfo Where to return extended error info. Optional. ++ */ ++static int RTLDRELF_NAME(ValidateAndProcessDynamicInfo)(PRTLDRMODELF pModElf, uint64_t cbRawImage, uint32_t fFlags, ++ const char *pszLogName, PRTERRINFO pErrInfo) ++{ ++ /* ++ * Check preconditions. ++ */ ++ AssertReturn(pModElf->Ehdr.e_type == ET_DYN || pModElf->Ehdr.e_type == ET_EXEC, VERR_INTERNAL_ERROR_2); ++ if (pModElf->Ehdr.e_phnum <= 1 || pModElf->Ehdr.e_phnum >= _32K) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: e_phnum=%u is out of bounds (2..32K)", pszLogName, pModElf->Ehdr.e_phnum); ++ if (pModElf->iShDynamic == ~0U) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: no .dynamic section", pszLogName); ++ AssertReturn(pModElf->cDynamic > 1 && pModElf->cDynamic <= _64K, VERR_INTERNAL_ERROR_3); ++ ++ /* ASSUME that the sections are ordered by address. That simplifies ++ validation code further down. */ ++ AssertReturn(pModElf->Ehdr.e_shnum >= 2, VERR_INTERNAL_ERROR_4); ++ Elf_Shdr const *paShdrs = pModElf->paShdrs; ++ Elf_Addr uPrevEnd = paShdrs[1].sh_addr + paShdrs[1].sh_size; ++ for (unsigned i = 2; i < pModElf->Ehdr.e_shnum; i++) ++ if (paShdrs[i].sh_flags & SHF_ALLOC) ++ { ++ if (uPrevEnd > paShdrs[i].sh_addr) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: section %u is out of order: uPrevEnd=" FMT_ELF_ADDR " sh_addr=" FMT_ELF_ADDR, ++ pszLogName, i, uPrevEnd, paShdrs[i].sh_addr); ++ uPrevEnd = paShdrs[i].sh_addr + paShdrs[i].sh_size; ++ } ++ ++ /* Must have string and symbol tables. */ ++ if (pModElf->Dyn.iStrSh == ~0U) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: No dynamic string table section", pszLogName); ++ if (pModElf->Dyn.iSymSh == ~0U) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: No dynamic symbol table section", pszLogName); ++ ++ /* ++ * Load the program headers. ++ */ ++ size_t const cbPhdrs = sizeof(pModElf->paPhdrs[0]) * pModElf->Ehdr.e_phnum; ++ Elf_Phdr *paPhdrs = (Elf_Phdr *)RTMemAllocZ(cbPhdrs); ++ pModElf->paPhdrs = paPhdrs; ++ AssertReturn(paPhdrs, VERR_NO_MEMORY); ++ ++ int rc = pModElf->Core.pReader->pfnRead(pModElf->Core.pReader, paPhdrs, cbPhdrs, pModElf->Ehdr.e_phoff); ++ if (RT_FAILURE(rc)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, rc, "%s: pfnRead(,,%#zx, " FMT_ELF_OFF ") -> %Rrc", ++ pszLogName, cbPhdrs, pModElf->Ehdr.e_phoff, rc); ++ ++ /* ++ * Validate them. ++ */ ++ unsigned cbPage = _4K; /** @todo generalize architecture specific stuff using its own code template header. */ ++ switch (pModElf->Core.enmArch) ++ { ++ case RTLDRARCH_AMD64: ++ case RTLDRARCH_X86_32: ++ break; ++ default: ++ AssertFailedBreak(/** @todo page size for got.plt hacks */); + } ++ unsigned iLoad = 0; ++ unsigned iLoadShdr = 1; /* ASSUMES ordered (checked above). */ ++ unsigned cDynamic = 0; ++ Elf_Addr cbImage = 0; ++ Elf_Addr uLinkAddress = ~(Elf_Addr)0; ++ for (unsigned i = 0; i < pModElf->Ehdr.e_phnum; i++) ++ { ++ const Elf_Phdr * const pPhdr = &paPhdrs[i]; ++ Log3(("RTLdrELF: Program Header #%d:\n" ++ "RTLdrELF: p_type: " FMT_ELF_WORD " (%s)\n" ++ "RTLdrELF: p_flags: " FMT_ELF_WORD "\n" ++ "RTLdrELF: p_offset: " FMT_ELF_OFF "\n" ++ "RTLdrELF: p_vaddr: " FMT_ELF_ADDR "\n" ++ "RTLdrELF: p_paddr: " FMT_ELF_ADDR "\n" ++ "RTLdrELF: p_filesz: " FMT_ELF_XWORD "\n" ++ "RTLdrELF: p_memsz: " FMT_ELF_XWORD "\n" ++ "RTLdrELF: p_align: " FMT_ELF_XWORD "\n", ++ i, ++ pPhdr->p_type, rtldrElfGetPhdrType(pPhdr->p_type), pPhdr->p_flags, pPhdr->p_offset, ++ pPhdr->p_vaddr, pPhdr->p_paddr, pPhdr->p_filesz, pPhdr->p_memsz, pPhdr->p_align)); ++ ++ if (pPhdr->p_type == DT_NULL) ++ continue; ++ ++ if ( pPhdr->p_filesz != 0 ++ && ( pPhdr->p_offset >= cbRawImage ++ || pPhdr->p_filesz > cbRawImage ++ || pPhdr->p_offset + pPhdr->p_filesz > cbRawImage)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u: bogus p_offset=" FMT_ELF_OFF " & p_filesz=" FMT_ELF_XWORD " (file size %#RX64)", ++ pszLogName, i, pPhdr->p_offset, pPhdr->p_filesz, cbRawImage); ++ ++ if (pPhdr->p_flags & ~(Elf64_Word)(PF_X | PF_R | PF_W)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Prog Hdr #%u: bogus p_flags=" FMT_ELF_WORD, ++ pszLogName, i, pPhdr->p_flags); ++ ++ if (!RT_IS_POWER_OF_TWO(pPhdr->p_align)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Prog Hdr #%u: bogus p_align=" FMT_ELF_XWORD, ++ pszLogName, i, pPhdr->p_align); ++ ++ if ( pPhdr->p_align > 1 ++ && pPhdr->p_memsz > 0 ++ && pPhdr->p_filesz > 0 ++ && (pPhdr->p_offset & (pPhdr->p_align - 1)) != (pPhdr->p_vaddr & (pPhdr->p_align - 1))) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u: misaligned p_offset=" FMT_ELF_OFF " p_vaddr=" FMT_ELF_ADDR " p_align=" FMT_ELF_XWORD, ++ pszLogName, i, pPhdr->p_offset, pPhdr->p_vaddr, pPhdr->p_align); ++ ++ /* Do some type specfic checks: */ ++ switch (pPhdr->p_type) ++ { ++ case PT_LOAD: ++ { ++ if (pPhdr->p_memsz < pPhdr->p_filesz) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u/LOAD#%u: bogus p_memsz=" FMT_ELF_XWORD " or p_filesz=" FMT_ELF_XWORD, ++ pszLogName, i, iLoad, pPhdr->p_memsz, pPhdr->p_filesz); ++ cbImage = pPhdr->p_vaddr + pPhdr->p_memsz; ++ if (iLoad == 0) ++ uLinkAddress = pPhdr->p_vaddr; ++ ++ /* Find the corresponding sections, checking their addresses and ++ file offsets since the rest of the code is still section based ++ rather than using program headers as it should... */ ++ Elf_Off off = pPhdr->p_offset; ++ Elf_Addr uAddr = pPhdr->p_vaddr; ++ Elf_Xword cbMem = pPhdr->p_memsz; ++ Elf_Xword cbFile = pPhdr->p_filesz; ++ while (cbMem > 0) ++ { ++ if (iLoadShdr < pModElf->Ehdr.e_shnum) ++ { /* likely */ } ++ else if (iLoadShdr == pModElf->Ehdr.e_shnum) ++ { ++ /** @todo anything else to check here? */ ++ iLoadShdr++; ++ break; ++ } ++ else ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u/LOAD#%u: Out of sections at " FMT_ELF_ADDR " LB " FMT_ELF_XWORD, ++ pszLogName, i, iLoad, uAddr, cbMem); ++ if (!(paShdrs[iLoadShdr].sh_flags & SHF_ALLOC)) ++ { ++ if ( paShdrs[iLoadShdr].sh_type != SHT_NOBITS ++ && paShdrs[iLoadShdr].sh_size > 0 ++ && off < paShdrs[iLoadShdr].sh_offset + paShdrs[iLoadShdr].sh_size ++ && paShdrs[iLoadShdr].sh_offset < off + cbMem) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u/LOAD#%u: Overlaps with !SHF_ALLOC section at " FMT_ELF_OFF " LB " FMT_ELF_XWORD, ++ pszLogName, i, iLoad, paShdrs[iLoadShdr].sh_offset, paShdrs[iLoadShdr].sh_size); ++ pModElf->paShdrExtras[iLoadShdr].idxPhdr = UINT16_MAX; ++ iLoadShdr++; ++ continue; ++ } ++ ++ if (uAddr != paShdrs[iLoadShdr].sh_addr) ++ { ++ /* Before the first section we expect headers to be loaded, so ++ that the file is simply mapped from file offset zero. */ ++ if ( iLoadShdr == 1 ++ && iLoad == 0 ++ && paShdrs[1].sh_addr == paShdrs[1].sh_offset ++ && cbFile >= paShdrs[1].sh_offset ++ && cbMem >= paShdrs[1].sh_offset) ++ { ++ /* Modify paShdrs[0] to describe the gap. ".elf.headers" */ ++ pModElf->iFirstSect = 0; ++ pModElf->paShdrs[0].sh_name = 0; ++ pModElf->paShdrs[0].sh_type = SHT_PROGBITS; ++ pModElf->paShdrs[0].sh_flags = SHF_ALLOC ++ | (pPhdr->p_flags & PF_W ? SHF_WRITE : 0) ++ | (pPhdr->p_flags & PF_X ? SHF_EXECINSTR : 0); ++ pModElf->paShdrs[0].sh_addr = uAddr; ++ pModElf->paShdrs[0].sh_offset = off; ++ pModElf->paShdrs[0].sh_size = paShdrs[1].sh_offset; ++ pModElf->paShdrs[0].sh_link = 0; ++ pModElf->paShdrs[0].sh_info = 0; ++ pModElf->paShdrs[0].sh_addralign = pPhdr->p_align; ++ pModElf->paShdrs[0].sh_entsize = 0; ++ *(Elf_Shdr *)pModElf->paOrgShdrs = pModElf->paShdrs[0]; /* (necessary for segment enumeration) */ ++ ++ uAddr += paShdrs[1].sh_offset; ++ cbMem -= paShdrs[1].sh_offset; ++ cbFile -= paShdrs[1].sh_offset; ++ off = paShdrs[1].sh_offset; ++ } ++ /* Alignment padding? Allow up to a page size. */ ++ else if ( paShdrs[iLoadShdr].sh_addr > uAddr ++ && paShdrs[iLoadShdr].sh_addr - uAddr ++ < RT_MAX(paShdrs[iLoadShdr].sh_addralign, cbPage /*got.plt hack*/)) ++ { ++ Elf_Xword cbAlignPadding = paShdrs[iLoadShdr].sh_addr - uAddr; ++ if (cbAlignPadding >= cbMem) ++ break; ++ cbMem -= cbAlignPadding; ++ uAddr += cbAlignPadding; ++ if (cbFile > cbAlignPadding) ++ { ++ off += cbAlignPadding; ++ cbFile -= cbAlignPadding; ++ } ++ else ++ { ++ off += cbFile; ++ cbFile = 0; ++ } ++ } ++ } ++ ++ if ( uAddr == paShdrs[iLoadShdr].sh_addr ++ && cbMem >= paShdrs[iLoadShdr].sh_size ++ && ( paShdrs[iLoadShdr].sh_type != SHT_NOBITS ++ ? off == paShdrs[iLoadShdr].sh_offset ++ && cbFile >= paShdrs[iLoadShdr].sh_size /* this might be too strict... */ ++ : cbFile == 0) ) ++ { ++ if (paShdrs[iLoadShdr].sh_type != SHT_NOBITS) ++ { ++ off += paShdrs[iLoadShdr].sh_size; ++ cbFile -= paShdrs[iLoadShdr].sh_size; ++ } ++ uAddr += paShdrs[iLoadShdr].sh_size; ++ cbMem -= paShdrs[iLoadShdr].sh_size; ++ } ++ else ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u/LOAD#%u: Mismatch at " FMT_ELF_ADDR " LB " FMT_ELF_XWORD " (file " FMT_ELF_OFF " LB " FMT_ELF_XWORD ") with section #%u " FMT_ELF_ADDR " LB " FMT_ELF_XWORD " (file " FMT_ELF_OFF " sh_type=" FMT_ELF_WORD ")", ++ pszLogName, i, iLoad, uAddr, cbMem, off, cbFile, ++ iLoadShdr, paShdrs[iLoadShdr].sh_addr, paShdrs[iLoadShdr].sh_size, ++ paShdrs[iLoadShdr].sh_offset, paShdrs[iLoadShdr].sh_type); ++ ++ pModElf->paShdrExtras[iLoadShdr].idxPhdr = iLoad; ++ iLoadShdr++; ++ } /* section loop */ ++ ++ iLoad++; ++ break; ++ } ++ ++ case PT_DYNAMIC: ++ { ++ const Elf_Shdr *pShdr = &pModElf->paShdrs[pModElf->iShDynamic]; ++ if (pPhdr->p_offset != pShdr->sh_offset) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u/DYNAMIC: p_offset=" FMT_ELF_OFF " expected " FMT_ELF_OFF, ++ pszLogName, i, pPhdr->p_offset, pShdr->sh_offset); ++ if (RT_MAX(pPhdr->p_memsz, pPhdr->p_filesz) != pShdr->sh_size) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: Prog Hdr #%u/DYNAMIC: expected " FMT_ELF_XWORD " for RT_MAX(p_memsz=" FMT_ELF_XWORD ", p_filesz=" FMT_ELF_XWORD ")", ++ pszLogName, i, pShdr->sh_size, pPhdr->p_memsz, pPhdr->p_filesz); ++ cDynamic++; ++ break; ++ } ++ } ++ } ++ ++ if (iLoad == 0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, rc, "%s: No PT_LOAD program headers", pszLogName); ++ if (cDynamic != 1) ++ return RTERRINFO_LOG_SET_F(pErrInfo, rc, "%s: No program header for the DYNAMIC section", pszLogName); ++ ++ cbImage -= uLinkAddress; ++ pModElf->cbImage = (uint64_t)cbImage; ++ pModElf->LinkAddress = uLinkAddress; ++ AssertReturn(pModElf->cbImage == cbImage, VERR_INTERNAL_ERROR_5); ++ Log3(("RTLdrELF: LinkAddress=" FMT_ELF_ADDR " cbImage=" FMT_ELF_ADDR " (from PT_LOAD)\n", uLinkAddress, cbImage)); ++ ++ for (; iLoadShdr < pModElf->Ehdr.e_shnum; iLoadShdr++) ++ if ( !(paShdrs[iLoadShdr].sh_flags & SHF_ALLOC) ++ || paShdrs[iLoadShdr].sh_size == 0) ++ pModElf->paShdrExtras[iLoadShdr].idxPhdr = UINT16_MAX; ++ else ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: No PT_LOAD for section #%u " FMT_ELF_ADDR " LB " FMT_ELF_XWORD " (file " FMT_ELF_OFF " sh_type=" FMT_ELF_WORD ")", ++ pszLogName, iLoadShdr, paShdrs[iLoadShdr].sh_addr, paShdrs[iLoadShdr].sh_size, ++ paShdrs[iLoadShdr].sh_offset, paShdrs[iLoadShdr].sh_type); ++ ++ /* ++ * Load and validate the dynamic table. We have got / will get most of the ++ * info we need from the section table, so we must make sure this matches up. ++ */ ++ Log3(("RTLdrELF: Dynamic section - %u entries\n", pModElf->cDynamic)); ++ size_t const cbDynamic = pModElf->cDynamic * sizeof(pModElf->paDynamic[0]); ++ Elf_Dyn * const paDynamic = (Elf_Dyn *)RTMemAlloc(cbDynamic); ++ AssertReturn(paDynamic, VERR_NO_MEMORY); ++ pModElf->paDynamic = paDynamic; ++ ++ rc = pModElf->Core.pReader->pfnRead(pModElf->Core.pReader, paDynamic, cbDynamic, paShdrs[pModElf->iShDynamic].sh_offset); ++ if (RT_FAILURE(rc)) ++ return RTERRINFO_LOG_SET_F(pErrInfo, rc, "%s: pfnRead(,,%#zx, " FMT_ELF_OFF ") -> %Rrc", ++ pszLogName, cbDynamic, paShdrs[pModElf->iShDynamic].sh_offset, rc); ++ ++ for (uint32_t i = 0; i < pModElf->cDynamic; i++) ++ { ++#define LOG_VALIDATE_PTR_RET(szName) do { \ ++ Log3(("RTLdrELF: DT[%u]: %16s " FMT_ELF_ADDR "\n", i, szName, paDynamic[i].d_un.d_ptr)); \ ++ if ((uint64_t)paDynamic[i].d_un.d_ptr - uLinkAddress < cbImage) { /* likely */ } \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" szName ": Invalid address " FMT_ELF_ADDR " (valid range: " FMT_ELF_ADDR " LB " FMT_ELF_ADDR ")", \ ++ pszLogName, i, paDynamic[i].d_un.d_ptr, uLinkAddress, cbImage); \ ++ } while (0) ++#define LOG_VALIDATE_PTR_VAL_RET(szName, uExpected) do { \ ++ Log3(("RTLdrELF: DT[%u]: %16s " FMT_ELF_ADDR "\n", i, szName, (uint64_t)paDynamic[i].d_un.d_ptr)); \ ++ if (paDynamic[i].d_un.d_ptr == (Elf_Addr)(uExpected)) { /* likely */ } \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" szName ": " FMT_ELF_ADDR ", expected " FMT_ELF_ADDR, \ ++ pszLogName, i, paDynamic[i].d_un.d_ptr, (Elf_Addr)(uExpected)); \ ++ } while (0) ++#define LOG_VALIDATE_STR_RET(szName) do { \ ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64\n", i, szName, (uint64_t)paDynamic[i].d_un.d_val)); \ ++ if ((uint64_t)paDynamic[i].d_un.d_val < pModElf->Dyn.cbStr) { /* likely */ } \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" szName ": Invalid string table offset %#RX64 (max %#x)", \ ++ pszLogName, i, (uint64_t)paDynamic[i].d_un.d_val, pModElf->Dyn.cbStr); \ ++ } while (0) ++#define LOG_VALIDATE_VAL_RET(szName, uExpected) do { \ ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64\n", i, szName, (uint64_t)paDynamic[i].d_un.d_val)); \ ++ if ((uint64_t)paDynamic[i].d_un.d_val == (uint64_t)(uExpected)) { /* likely */ } \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" szName ": %#RX64, expected %#RX64", \ ++ pszLogName, i, (uint64_t)paDynamic[i].d_un.d_val, (uint64_t)(uExpected)); \ ++ } while (0) ++#define SET_RELOC_TYPE_RET(a_szName, a_uType) do { \ ++ if (pModElf->DynInfo.uRelocType == 0 || pModElf->DynInfo.uRelocType == (a_uType)) \ ++ pModElf->DynInfo.uRelocType = (a_uType); \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" a_szName ": Mixing DT_RELA and DT_REL", pszLogName, i); \ ++ } while (0) ++#define SET_INFO_FIELD_RET(a_szName, a_Field, a_Value, a_UnsetValue, a_szFmt) do { \ ++ if ((a_Field) == (a_UnsetValue) && (a_Value) != (a_UnsetValue)) \ ++ (a_Field) = (a_Value); /* likely */ \ ++ else if ((a_Field) != (a_UnsetValue)) \ ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" a_szName ": Multiple entries (first value " a_szFmt ", second " a_szFmt ")", pszLogName, i, (a_Field), (a_Value)); \ ++ else if ((a_Value) != (a_UnsetValue)) \ ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" a_szName ": Unexpected value " a_szFmt, pszLogName, i, (a_Value)); \ ++ } while (0) ++#define FIND_MATCHING_SECTION_RET(a_szName, a_ExtraMatchExpr, a_idxShFieldToSet) do { \ ++ unsigned iSh; \ ++ for (iSh = 1; iSh < pModElf->Ehdr.e_shnum; iSh++) \ ++ if ( paShdrs[iSh].sh_addr == paDynamic[i].d_un.d_ptr \ ++ && (a_ExtraMatchExpr)) \ ++ { \ ++ (a_idxShFieldToSet) = iSh; \ ++ if (pModElf->paShdrExtras[iSh].idxDt != UINT16_MAX) \ ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, \ ++ "%s: DT[%u]/" a_szName ": section #%u (" FMT_ELF_ADDR ") already referenced by DT[%u]", \ ++ pszLogName, i, iSh, paShdrs[iSh].sh_addr, pModElf->paShdrExtras[iSh].idxDt); \ ++ pModElf->paShdrExtras[iSh].idxDt = i; \ ++ pModElf->paShdrExtras[iSh].uDtTag = (uint32_t)paDynamic[i].d_tag; \ ++ break; \ ++ } \ ++ if (iSh < pModElf->Ehdr.e_shnum) { /* likely */ } \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" a_szName ": No matching section for " FMT_ELF_ADDR, pszLogName, i, paDynamic[i].d_un.d_ptr); \ ++ } while (0) ++#define ONLY_FOR_DEBUG_OR_VALIDATION_RET(a_szName) do { \ ++ if (fFlags & (RTLDR_O_FOR_DEBUG | RTLDR_O_FOR_VALIDATION)) { /* likely */ } \ ++ else return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/" a_szName ": Not supported (" FMT_ELF_ADDR ")", pszLogName, i, paDynamic[i].d_un.d_ptr); \ ++ } while (0) ++#define LOG_NON_VALUE_ENTRY(a_szName) Log3(("RTLdrELF: DT[%u]: %16s (%#RX64)\n", i, a_szName, (uint64_t)paDynamic[i].d_un.d_val)) ++ ++ switch (paDynamic[i].d_tag) ++ { ++ case DT_NULL: ++ LOG_NON_VALUE_ENTRY("DT_NULL"); ++ for (unsigned iNull = i + 1; iNull < pModElf->cDynamic; iNull++) ++ if (paDynamic[i].d_tag == DT_NULL) /* Not technically a bug, but let's try being extremely strict for now */ ++ LOG_NON_VALUE_ENTRY("DT_NULL"); ++ else if (!(fFlags & (RTLDR_O_FOR_DEBUG | RTLDR_O_FOR_VALIDATION))) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: DT[%u]/DT_NULL: Dynamic section isn't zero padded (extra #%u of #%u)", ++ pszLogName, i, iNull - i, pModElf->cDynamic - i); ++ i = pModElf->cDynamic; ++ break; ++ case DT_NEEDED: ++ LOG_VALIDATE_STR_RET("DT_NEEDED"); ++ break; ++ case DT_PLTRELSZ: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64 bytes\n", i, "DT_PLTRELSZ", (uint64_t)paDynamic[i].d_un.d_val)); ++ SET_INFO_FIELD_RET("DT_PLTRELSZ", pModElf->DynInfo.cbJmpRelocs, (Elf_Xword)paDynamic[i].d_un.d_val, 0, FMT_ELF_XWORD); ++ break; ++ case DT_PLTGOT: ++ LOG_VALIDATE_PTR_RET("DT_PLTGOT"); ++ break; ++ case DT_HASH: ++ LOG_VALIDATE_PTR_RET("DT_HASH"); ++ break; ++ case DT_STRTAB: ++ LOG_VALIDATE_PTR_VAL_RET("DT_STRTAB", paShdrs[pModElf->Dyn.iStrSh].sh_addr); ++ pModElf->paShdrExtras[pModElf->Dyn.iStrSh].idxDt = i; ++ pModElf->paShdrExtras[pModElf->Dyn.iSymSh].uDtTag = DT_STRTAB; ++ break; ++ case DT_SYMTAB: ++ LOG_VALIDATE_PTR_VAL_RET("DT_SYMTAB", paShdrs[pModElf->Dyn.iSymSh].sh_addr); ++ pModElf->paShdrExtras[pModElf->Dyn.iSymSh].idxDt = i; ++ pModElf->paShdrExtras[pModElf->Dyn.iSymSh].uDtTag = DT_SYMTAB; ++ break; ++ case DT_RELA: ++ LOG_VALIDATE_PTR_RET("DT_RELA"); ++ SET_RELOC_TYPE_RET("DT_RELA", DT_RELA); ++ SET_INFO_FIELD_RET("DT_RELA", pModElf->DynInfo.uPtrRelocs, paDynamic[i].d_un.d_ptr, ~(Elf_Addr)0, FMT_ELF_ADDR); ++ FIND_MATCHING_SECTION_RET("DT_RELA", paShdrs[iSh].sh_type == SHT_RELA, pModElf->DynInfo.idxShRelocs); ++ break; ++ case DT_RELASZ: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64 bytes\n", i, "DT_RELASZ", (uint64_t)paDynamic[i].d_un.d_val)); ++ SET_RELOC_TYPE_RET("DT_RELASZ", DT_RELA); ++ SET_INFO_FIELD_RET("DT_RELASZ", pModElf->DynInfo.cbRelocs, (Elf_Xword)paDynamic[i].d_un.d_val, 0, FMT_ELF_XWORD); ++ break; ++ case DT_RELAENT: ++ LOG_VALIDATE_VAL_RET("DT_RELAENT", sizeof(Elf_Rela)); ++ SET_RELOC_TYPE_RET("DT_RELAENT", DT_RELA); ++ SET_INFO_FIELD_RET("DT_RELAENT", pModElf->DynInfo.cbRelocEntry, (unsigned)sizeof(Elf_Rela), 0, "%u"); ++ break; ++ case DT_STRSZ: ++ LOG_VALIDATE_VAL_RET("DT_STRSZ", pModElf->Dyn.cbStr); ++ break; ++ case DT_SYMENT: ++ LOG_VALIDATE_VAL_RET("DT_SYMENT", sizeof(Elf_Sym)); ++ break; ++ case DT_INIT: ++ LOG_VALIDATE_PTR_RET("DT_INIT"); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_INIT"); ++ break; ++ case DT_FINI: ++ LOG_VALIDATE_PTR_RET("DT_FINI"); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_FINI"); ++ break; ++ case DT_SONAME: ++ LOG_VALIDATE_STR_RET("DT_SONAME"); ++ break; ++ case DT_RPATH: ++ LOG_VALIDATE_STR_RET("DT_RPATH"); ++ break; ++ case DT_SYMBOLIC: ++ LOG_NON_VALUE_ENTRY("DT_SYMBOLIC"); ++ break; ++ case DT_REL: ++ LOG_VALIDATE_PTR_RET("DT_REL"); ++ SET_RELOC_TYPE_RET("DT_REL", DT_REL); ++ SET_INFO_FIELD_RET("DT_REL", pModElf->DynInfo.uPtrRelocs, paDynamic[i].d_un.d_ptr, ~(Elf_Addr)0, FMT_ELF_ADDR); ++ FIND_MATCHING_SECTION_RET("DT_REL", paShdrs[iSh].sh_type == SHT_REL, pModElf->DynInfo.idxShRelocs); ++ break; ++ case DT_RELSZ: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64 bytes\n", i, "DT_RELSZ", (uint64_t)paDynamic[i].d_un.d_val)); ++ SET_RELOC_TYPE_RET("DT_RELSZ", DT_REL); ++ SET_INFO_FIELD_RET("DT_RELSZ", pModElf->DynInfo.cbRelocs, (Elf_Xword)paDynamic[i].d_un.d_val, 0, FMT_ELF_XWORD); ++ break; ++ case DT_RELENT: ++ LOG_VALIDATE_VAL_RET("DT_RELENT", sizeof(Elf_Rel)); ++ SET_RELOC_TYPE_RET("DT_RELENT", DT_REL); ++ SET_INFO_FIELD_RET("DT_RELENT", pModElf->DynInfo.cbRelocEntry, (unsigned)sizeof(Elf_Rel), 0, "%u"); ++ break; ++ case DT_PLTREL: ++ if (paDynamic[i].d_un.d_val != DT_RELA && paDynamic[i].d_un.d_val != DT_REL) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT[%u]/DT_PLTREL: Invalid value %#RX64", ++ pszLogName, i, (uint64_t)paDynamic[i].d_un.d_val); ++ Log3(("RTLdrELF: DT[%u]: %16s DT_REL%s\n", i, "DT_PLTREL", paDynamic[i].d_un.d_val == DT_RELA ? "A" : "")); ++ SET_INFO_FIELD_RET("DT_PLTREL", pModElf->DynInfo.uJmpRelocType, (unsigned)paDynamic[i].d_un.d_val, 0, "%u"); ++ break; ++ case DT_DEBUG: ++ LOG_VALIDATE_PTR_RET("DT_DEBUG"); ++ break; ++ case DT_TEXTREL: ++ LOG_NON_VALUE_ENTRY("DT_TEXTREL"); ++ break; ++ case DT_JMPREL: ++ LOG_VALIDATE_PTR_RET("DT_JMPREL"); ++ SET_INFO_FIELD_RET("DT_JMPREL", pModElf->DynInfo.uPtrJmpRelocs, paDynamic[i].d_un.d_ptr, ~(Elf_Addr)0, FMT_ELF_ADDR); ++ FIND_MATCHING_SECTION_RET("DT_JMPREL", 1, pModElf->DynInfo.idxShJmpRelocs); ++ break; ++ case DT_BIND_NOW: ++ LOG_NON_VALUE_ENTRY("DT_BIND_NOW"); ++ break; ++ case DT_INIT_ARRAY: ++ LOG_VALIDATE_PTR_RET("DT_INIT_ARRAY"); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_INIT_ARRAY"); ++ break; ++ case DT_FINI_ARRAY: ++ LOG_VALIDATE_PTR_RET("DT_FINI_ARRAY"); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_FINI_ARRAY"); ++ break; ++ case DT_INIT_ARRAYSZ: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64 bytes\n", i, "DT_INIT_ARRAYSZ", (uint64_t)paDynamic[i].d_un.d_val)); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_INIT_ARRAYSZ"); ++ break; ++ case DT_FINI_ARRAYSZ: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64 bytes\n", i, "DT_FINI_ARRAYSZ", (uint64_t)paDynamic[i].d_un.d_val)); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_FINI_ARRAYSZ"); ++ break; ++ case DT_RUNPATH: ++ LOG_VALIDATE_STR_RET("DT_RUNPATH"); ++ break; ++ case DT_FLAGS: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64\n", i, "DT_FLAGS", (uint64_t)paDynamic[i].d_un.d_val)); ++ break; ++ case DT_PREINIT_ARRAY: ++ LOG_VALIDATE_PTR_RET("DT_PREINIT_ARRAY"); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_PREINIT_ARRAY"); ++ break; ++ case DT_PREINIT_ARRAYSZ: ++ Log3(("RTLdrELF: DT[%u]: %16s %#RX64 bytes\n", i, "DT_PREINIT_ARRAYSZ", (uint64_t)paDynamic[i].d_un.d_val)); ++ ONLY_FOR_DEBUG_OR_VALIDATION_RET("DT_PREINIT_ARRAYSZ"); ++ break; ++ default: ++ if ( paDynamic[i].d_un.d_val < DT_ENCODING ++ || (paDynamic[i].d_un.d_val & 1)) ++ Log3(("RTLdrELF: DT[%u]: %#010RX64 %#RX64%s\n", i, (uint64_t)paDynamic[i].d_tag, ++ (uint64_t)paDynamic[i].d_un.d_val, paDynamic[i].d_un.d_val >= DT_ENCODING ? " (val)" : "")); ++ else ++ { ++ Log3(("RTLdrELF: DT[%u]: %#010RX64 " FMT_ELF_ADDR " (addr)\n", ++ i, (uint64_t)paDynamic[i].d_tag, paDynamic[i].d_un.d_ptr)); ++ if ((uint64_t)paDynamic[i].d_un.d_ptr - uLinkAddress >= cbImage) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: DT[%u]/%#RX64: Invalid address " FMT_ELF_ADDR " (valid range: " FMT_ELF_ADDR " LB " FMT_ELF_ADDR ")", ++ pszLogName, i, (uint64_t)paDynamic[i].d_tag, ++ paDynamic[i].d_un.d_ptr, uLinkAddress, cbImage); ++ } ++ break; ++ } ++#undef LOG_VALIDATE_VAL_RET ++#undef LOG_VALIDATE_STR_RET ++#undef LOG_VALIDATE_PTR_VAL_RET ++#undef LOG_VALIDATE_PTR_RET ++#undef SET_RELOC_TYPE_RET ++#undef SET_INFO_FIELD_RET ++#undef FIND_MATCHING_SECTION_RET ++#undef ONLY_FOR_DEBUG_OR_VALIDATION_RET ++ } ++ ++ /* ++ * Validate the relocation information we've gathered. ++ */ ++ Elf_Word uShTypeArch = SHT_RELA; /** @todo generalize architecture specific stuff using its own code template header. */ ++ switch (pModElf->Core.enmArch) ++ { ++ case RTLDRARCH_AMD64: ++ break; ++ case RTLDRARCH_X86_32: ++ uShTypeArch = SHT_REL; ++ break; ++ default: ++ AssertFailedBreak(/** @todo page size for got.plt hacks */); ++ ++ } ++ ++ if (pModElf->DynInfo.uRelocType != 0) ++ { ++ const char * const pszModifier = pModElf->DynInfo.uRelocType == DT_RELA ? "A" : ""; ++ if (pModElf->DynInfo.uPtrRelocs == ~(Elf_Addr)0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Missing DT_REL%s", pszLogName, pszModifier); ++ if (pModElf->DynInfo.cbRelocs == 0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Missing DT_REL%sSZ", pszLogName, pszModifier); ++ if (pModElf->DynInfo.cbRelocEntry == 0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Missing DT_REL%sENT", pszLogName, pszModifier); ++ Elf_Shdr const *pShdrRelocs = &paShdrs[pModElf->DynInfo.idxShRelocs]; ++ Elf_Word const uShType = pModElf->DynInfo.uJmpRelocType == DT_RELA ? SHT_RELA : SHT_REL; ++ if (pShdrRelocs->sh_type != uShType) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT_REL%s* does not match section type: %u vs %u", ++ pszLogName, pszModifier, pShdrRelocs->sh_type, uShType); ++ if (pShdrRelocs->sh_size != pModElf->DynInfo.cbRelocs) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT_REL%sSZ does not match section size: %u vs %u", ++ pszLogName, pszModifier, pShdrRelocs->sh_size, pModElf->DynInfo.cbRelocs); ++ if (uShType != uShTypeArch) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT_REL%s* does not match architecture: %u, arch wants %u", ++ pszLogName, pszModifier, uShType, uShTypeArch); ++ } ++ ++ if ( pModElf->DynInfo.uPtrJmpRelocs != ~(Elf_Addr)0 ++ || pModElf->DynInfo.cbJmpRelocs != 0 ++ || pModElf->DynInfo.uJmpRelocType != 0) ++ { ++ if (pModElf->DynInfo.uPtrJmpRelocs == ~(Elf_Addr)0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Missing DT_JMPREL", pszLogName); ++ if (pModElf->DynInfo.cbJmpRelocs == 0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Missing DT_PLTRELSZ", pszLogName); ++ if (pModElf->DynInfo.uJmpRelocType == 0) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: Missing DT_PLTREL", pszLogName); ++ Elf_Shdr const *pShdrRelocs = &paShdrs[pModElf->DynInfo.idxShJmpRelocs]; ++ Elf_Word const uShType = pModElf->DynInfo.uJmpRelocType == DT_RELA ? SHT_RELA : SHT_REL; ++ if (pShdrRelocs->sh_type != uShType) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT_PLTREL does not match section type: %u vs %u", ++ pszLogName, pShdrRelocs->sh_type, uShType); ++ if (pShdrRelocs->sh_size != pModElf->DynInfo.cbJmpRelocs) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT_PLTRELSZ does not match section size: %u vs %u", ++ pszLogName, pShdrRelocs->sh_size, pModElf->DynInfo.cbJmpRelocs); ++ if (uShType != uShTypeArch) ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, "%s: DT_PLTREL does not match architecture: %u, arch wants %u", ++ pszLogName, uShType, uShTypeArch); ++ } ++ ++ /* ++ * Check that there aren't any other relocations hiding in the section table. ++ */ ++ for (uint32_t i = 1; i < pModElf->Ehdr.e_shnum; i++) ++ if ( (paShdrs[i].sh_type == SHT_REL || paShdrs[i].sh_type == SHT_RELA) ++ && pModElf->paShdrExtras[i].uDtTag != DT_REL ++ && pModElf->paShdrExtras[i].uDtTag != DT_RELA ++ && pModElf->paShdrExtras[i].uDtTag != DT_JMPREL) ++ { ++ char szSecHdrNm[80]; ++ return RTERRINFO_LOG_SET_F(pErrInfo, VERR_BAD_EXE_FORMAT, ++ "%s: section header #%u (%s type=" FMT_ELF_WORD " size=" FMT_ELF_XWORD ") contains relocations not referenced by the dynamic section", ++ pszLogName, i, ++ RTLDRELF_NAME(GetSHdrName)(pModElf, paShdrs[i].sh_name, szSecHdrNm, sizeof(szSecHdrNm)), ++ paShdrs[i].sh_type, paShdrs[i].sh_size); ++ } + + return VINF_SUCCESS; + } +@@ -1866,8 +2819,9 @@ static int RTLDRELF_NAME(ValidateSection + * @param fFlags Reserved, MBZ. + * @param enmArch Architecture specifier. + * @param phLdrMod Where to store the handle. ++ * @param pErrInfo Where to return extended error info. Optional. + */ +-static int RTLDRELF_NAME(Open)(PRTLDRREADER pReader, uint32_t fFlags, RTLDRARCH enmArch, PRTLDRMOD phLdrMod) ++static int RTLDRELF_NAME(Open)(PRTLDRREADER pReader, uint32_t fFlags, RTLDRARCH enmArch, PRTLDRMOD phLdrMod, PRTERRINFO pErrInfo) + { + const char *pszLogName = pReader->pfnLogName(pReader); + uint64_t cbRawImage = pReader->pfnSize(pReader); +@@ -1891,21 +2845,42 @@ static int RTLDRELF_NAME(Open)(PRTLDRREA + #else + pModElf->Core.enmArch = RTLDRARCH_AMD64; + #endif +- //pModElf->pvBits = NULL; +- //pModElf->Ehdr = {0}; +- //pModElf->paShdrs = NULL; +- //pModElf->paSyms = NULL; +- pModElf->iSymSh = ~0U; +- //pModElf->cSyms = 0; +- pModElf->iStrSh = ~0U; +- //pModElf->cbStr = 0; +- //pModElf->cbImage = 0; +- //pModElf->LinkAddress = 0; +- //pModElf->pStr = NULL; +- //pModElf->cbShStr = 0; +- //pModElf->pShStr = NULL; +- //pModElf->iShEhFrame = 0; +- //pModElf->iShEhFrameHdr = 0; ++ //pModElf->pvBits = NULL; ++ //pModElf->Ehdr = {0}; ++ //pModElf->paShdrs = NULL; ++ //pModElf->Rel.paSyms = NULL; ++ pModElf->Rel.iSymSh = ~0U; ++ //pModElf->Rel.cSyms = 0; ++ pModElf->Rel.iStrSh = ~0U; ++ //pModElf->Rel.cbStr = 0; ++ //pModElf->Rel.pStr = NULL; ++ //pModElf->Dyn.paSyms = NULL; ++ pModElf->Dyn.iSymSh = ~0U; ++ //pModElf->Dyn.cSyms = 0; ++ pModElf->Dyn.iStrSh = ~0U; ++ //pModElf->Dyn.cbStr = 0; ++ //pModElf->Dyn.pStr = NULL; ++ pModElf->iFirstSect = 1; ++ //pModElf->fShdrInOrder = false; ++ //pModElf->cbImage = 0; ++ pModElf->LinkAddress = ~(Elf_Addr)0; ++ //pModElf->cbShStr = 0; ++ //pModElf->pShStr = NULL; ++ //pModElf->iShEhFrame = 0; ++ //pModElf->iShEhFrameHdr= 0; ++ pModElf->iShDynamic = ~0U; ++ //pModElf->cDynamic = 0; ++ //pModElf->paDynamic = NULL; ++ //pModElf->paPhdrs = NULL; ++ pModElf->DynInfo.uPtrRelocs = ~(Elf_Addr)0; ++ //pModElf->DynInfo.cbRelocs = 0; ++ //pModElf->DynInfo.cbRelocEntry = 0; ++ //pModElf->DynInfo.uRelocType = 0; ++ //pModElf->DynInfo.idxShRelocs = 0; ++ pModElf->DynInfo.uPtrJmpRelocs = ~(Elf_Addr)0; ++ //pModElf->DynInfo.cbJmpRelocs = 0; ++ //pModElf->DynInfo.uJmpRelocType = 0; ++ //pModElf->DynInfo.idxShJmpRelocs = 0; + + /* + * Read and validate the ELF header and match up the CPU architecture. +@@ -1914,7 +2889,7 @@ static int RTLDRELF_NAME(Open)(PRTLDRREA + if (RT_SUCCESS(rc)) + { + RTLDRARCH enmArchImage = RTLDRARCH_INVALID; /* shut up gcc */ +- rc = RTLDRELF_NAME(ValidateElfHeader)(&pModElf->Ehdr, pszLogName, cbRawImage, &enmArchImage); ++ rc = RTLDRELF_NAME(ValidateElfHeader)(&pModElf->Ehdr, cbRawImage, pszLogName, &enmArchImage, pErrInfo); + if (RT_SUCCESS(rc)) + { + if ( enmArch != RTLDRARCH_WHATEVER +@@ -1929,7 +2904,7 @@ static int RTLDRELF_NAME(Open)(PRTLDRREA + * introspection methods. + */ + size_t const cbShdrs = pModElf->Ehdr.e_shnum * sizeof(Elf_Shdr); +- Elf_Shdr *paShdrs = (Elf_Shdr *)RTMemAlloc(cbShdrs * 2); ++ Elf_Shdr *paShdrs = (Elf_Shdr *)RTMemAlloc(cbShdrs * 2 + sizeof(RTLDRMODELFSHX) * pModElf->Ehdr.e_shnum); + if (paShdrs) + { + pModElf->paShdrs = paShdrs; +@@ -1939,111 +2914,77 @@ static int RTLDRELF_NAME(Open)(PRTLDRREA + memcpy(&paShdrs[pModElf->Ehdr.e_shnum], paShdrs, cbShdrs); + pModElf->paOrgShdrs = &paShdrs[pModElf->Ehdr.e_shnum]; + ++ pModElf->paShdrExtras = (PRTLDRMODELFSHX)&pModElf->paOrgShdrs[pModElf->Ehdr.e_shnum]; ++ memset(pModElf->paShdrExtras, 0xff, sizeof(RTLDRMODELFSHX) * pModElf->Ehdr.e_shnum); ++ + pModElf->cbShStr = paShdrs[pModElf->Ehdr.e_shstrndx].sh_size; + + /* + * Validate the section headers and find relevant sections. + */ +- Elf_Addr uNextAddr = 0; +- for (unsigned i = 0; i < pModElf->Ehdr.e_shnum; i++) +- { +- rc = RTLDRELF_NAME(ValidateSectionHeader)(pModElf, i, pszLogName, cbRawImage); +- if (RT_FAILURE(rc)) +- break; +- +- /* We're looking for symbol tables. */ +- if (paShdrs[i].sh_type == SHT_SYMTAB) +- { +- if (pModElf->iSymSh != ~0U) +- { +- Log(("RTLdrElf: %s: Multiple symbol tabs! iSymSh=%d i=%d\n", pszLogName, pModElf->iSymSh, i)); +- rc = VERR_LDRELF_MULTIPLE_SYMTABS; +- break; +- } +- pModElf->iSymSh = i; +- pModElf->cSyms = (unsigned)(paShdrs[i].sh_size / sizeof(Elf_Sym)); +- AssertBreakStmt(pModElf->cSyms == paShdrs[i].sh_size / sizeof(Elf_Sym), rc = VERR_IMAGE_TOO_BIG); +- pModElf->iStrSh = paShdrs[i].sh_link; +- pModElf->cbStr = (unsigned)paShdrs[pModElf->iStrSh].sh_size; +- AssertBreakStmt(pModElf->cbStr == paShdrs[pModElf->iStrSh].sh_size, rc = VERR_IMAGE_TOO_BIG); +- } +- +- /* Special checks for the section string table. */ +- if (i == pModElf->Ehdr.e_shstrndx) +- { +- if (paShdrs[i].sh_type != SHT_STRTAB) +- { +- Log(("RTLdrElf: Section header string table is not a SHT_STRTAB: %#x\n", paShdrs[i].sh_type)); +- rc = VERR_BAD_EXE_FORMAT; +- break; +- } +- if (paShdrs[i].sh_size == 0) +- { +- Log(("RTLdrElf: Section header string table is empty\n")); +- rc = VERR_BAD_EXE_FORMAT; +- break; +- } +- } ++ rc = RTLDRELF_NAME(ValidateAndProcessSectionHeaders)(pModElf, paShdrs, cbRawImage, pszLogName, pErrInfo); + +- /* Kluge for the .data..percpu segment in 64-bit linux kernels. */ +- if (paShdrs[i].sh_flags & SHF_ALLOC) +- { +- if ( paShdrs[i].sh_addr == 0 +- && paShdrs[i].sh_addr < uNextAddr) +- { +- Elf_Addr uAddr = RT_ALIGN_T(uNextAddr, paShdrs[i].sh_addralign, Elf_Addr); +- Log(("RTLdrElf: Out of order section #%d; adjusting sh_addr from " FMT_ELF_ADDR " to " FMT_ELF_ADDR "\n", +- i, paShdrs[i].sh_addr, uAddr)); +- paShdrs[i].sh_addr = uAddr; +- } +- uNextAddr = paShdrs[i].sh_addr + paShdrs[i].sh_size; +- } +- } /* for each section header */ ++ /* ++ * Read validate and process program headers if ET_DYN or ET_EXEC. ++ */ ++ if (RT_SUCCESS(rc) && (pModElf->Ehdr.e_type == ET_DYN || pModElf->Ehdr.e_type == ET_EXEC)) ++ rc = RTLDRELF_NAME(ValidateAndProcessDynamicInfo)(pModElf, cbRawImage, fFlags, pszLogName, pErrInfo); + + /* +- * Calculate the image base address if the image isn't relocatable. ++ * Massage the section headers. + */ +- if (RT_SUCCESS(rc) && pModElf->Ehdr.e_type != ET_REL) ++ if (RT_SUCCESS(rc)) + { +- pModElf->LinkAddress = ~(Elf_Addr)0; +- for (unsigned i = 0; i < pModElf->Ehdr.e_shnum; i++) +- if ( (paShdrs[i].sh_flags & SHF_ALLOC) +- && paShdrs[i].sh_addr < pModElf->LinkAddress) +- pModElf->LinkAddress = paShdrs[i].sh_addr; +- if (pModElf->LinkAddress == ~(Elf_Addr)0) ++ if (pModElf->Ehdr.e_type == ET_REL) + { +- AssertFailed(); +- rc = VERR_LDR_GENERAL_FAILURE; +- } +- if (pModElf->Ehdr.e_type == ET_DYN && pModElf->LinkAddress < 0x1000) ++ /* Do allocations and figure the image size: */ + pModElf->LinkAddress = 0; ++ for (unsigned i = 1; i < pModElf->Ehdr.e_shnum; i++) ++ if (paShdrs[i].sh_flags & SHF_ALLOC) ++ { ++ paShdrs[i].sh_addr = paShdrs[i].sh_addralign ++ ? RT_ALIGN_T(pModElf->cbImage, paShdrs[i].sh_addralign, Elf_Addr) ++ : (Elf_Addr)pModElf->cbImage; ++ Elf_Addr EndAddr = paShdrs[i].sh_addr + paShdrs[i].sh_size; ++ if (pModElf->cbImage < EndAddr) ++ { ++ pModElf->cbImage = (size_t)EndAddr; ++ AssertMsgBreakStmt(pModElf->cbImage == EndAddr, (FMT_ELF_ADDR "\n", EndAddr), rc = VERR_IMAGE_TOO_BIG); ++ } ++ Log2(("RTLdrElf: %s: Assigned " FMT_ELF_ADDR " to section #%d\n", pszLogName, paShdrs[i].sh_addr, i)); ++ } ++ } ++ else ++ { ++ /* Convert sh_addr to RVA: */ ++ Assert(pModElf->LinkAddress != ~(Elf_Addr)0); ++ for (unsigned i = 0 /*!*/; i < pModElf->Ehdr.e_shnum; i++) ++ if (paShdrs[i].sh_flags & SHF_ALLOC) ++ paShdrs[i].sh_addr -= pModElf->LinkAddress; ++ } + } + + /* +- * Perform allocations / RVA calculations, determine the image size. ++ * Check if the sections are in order by address, as that will simplify ++ * enumeration and address translation. + */ +- if (RT_SUCCESS(rc)) +- for (unsigned i = 0; i < pModElf->Ehdr.e_shnum; i++) +- if (paShdrs[i].sh_flags & SHF_ALLOC) ++ pModElf->fShdrInOrder = true; ++ Elf_Addr uEndAddr = 0; ++ for (unsigned i = pModElf->iFirstSect; i < pModElf->Ehdr.e_shnum; i++) ++ if (paShdrs[i].sh_flags & SHF_ALLOC) ++ { ++ if (uEndAddr <= paShdrs[i].sh_addr) ++ uEndAddr = paShdrs[i].sh_addr + paShdrs[i].sh_size; ++ else + { +- if (pModElf->Ehdr.e_type == ET_REL) +- paShdrs[i].sh_addr = paShdrs[i].sh_addralign +- ? RT_ALIGN_T(pModElf->cbImage, paShdrs[i].sh_addralign, Elf_Addr) +- : (Elf_Addr)pModElf->cbImage; +- else +- paShdrs[i].sh_addr -= pModElf->LinkAddress; +- Elf_Addr EndAddr = paShdrs[i].sh_addr + paShdrs[i].sh_size; +- if (pModElf->cbImage < EndAddr) +- { +- pModElf->cbImage = (size_t)EndAddr; +- AssertMsgBreakStmt(pModElf->cbImage == EndAddr, (FMT_ELF_ADDR "\n", EndAddr), rc = VERR_IMAGE_TOO_BIG); +- } +- Log2(("RTLdrElf: %s: Assigned " FMT_ELF_ADDR " to section #%d\n", pszLogName, paShdrs[i].sh_addr, i)); ++ pModElf->fShdrInOrder = false; ++ break; + } ++ } + +- Log2(("RTLdrElf: iSymSh=%u cSyms=%u iStrSh=%u cbStr=%u rc=%Rrc cbImage=%#zx LinkAddress=" FMT_ELF_ADDR "\n", +- pModElf->iSymSh, pModElf->cSyms, pModElf->iStrSh, pModElf->cbStr, rc, +- pModElf->cbImage, pModElf->LinkAddress)); ++ Log2(("RTLdrElf: iSymSh=%u cSyms=%u iStrSh=%u cbStr=%u rc=%Rrc cbImage=%#zx LinkAddress=" FMT_ELF_ADDR " fShdrInOrder=%RTbool\n", ++ pModElf->Rel.iSymSh, pModElf->Rel.cSyms, pModElf->Rel.iStrSh, pModElf->Rel.cbStr, rc, ++ pModElf->cbImage, pModElf->LinkAddress, pModElf->fShdrInOrder)); + if (RT_SUCCESS(rc)) + { + pModElf->Core.pOps = &RTLDRELF_MID(s_rtldrElf,Ops); +@@ -2077,6 +3018,7 @@ static int RTLDRELF_NAME(Open)(PRTLDRREA + #undef RTLDRELF_MID + + #undef FMT_ELF_ADDR ++#undef FMT_ELF_ADDR7 + #undef FMT_ELF_HALF + #undef FMT_ELF_SHALF + #undef FMT_ELF_OFF +@@ -2102,6 +3044,8 @@ static int RTLDRELF_NAME(Open)(PRTLDRREA + #undef Elf_Size + #undef Elf_Sword + #undef Elf_Word ++#undef Elf_Xword ++#undef Elf_Sxword + + #undef RTLDRMODELF + #undef PRTLDRMODELF +--- a/include/iprt/memobj.h ++++ b/include/iprt/memobj.h +@@ -127,7 +127,10 @@ RTR0DECL(int) RTR0MemObjFree(RTR0MEMOBJ + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. +- * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. ++ * @param fExecutable Flag indicating whether it should be permitted to ++ * executed code in the memory object. The user must ++ * use RTR0MemObjProtect after initialization the ++ * allocation to actually make it executable. + */ + #define RTR0MemObjAllocPage(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocPageTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) +@@ -140,7 +143,10 @@ RTR0DECL(int) RTR0MemObjFree(RTR0MEMOBJ + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. +- * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. ++ * @param fExecutable Flag indicating whether it should be permitted to ++ * executed code in the memory object. The user must ++ * use RTR0MemObjProtect after initialization the ++ * allocation to actually make it executable. + * @param pszTag Allocation tag used for statistics and such. + */ + RTR0DECL(int) RTR0MemObjAllocPageTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); +@@ -154,7 +160,10 @@ RTR0DECL(int) RTR0MemObjAllocPageTag(PRT + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. +- * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. ++ * @param fExecutable Flag indicating whether it should be permitted to ++ * executed code in the memory object. The user must ++ * use RTR0MemObjProtect after initialization the ++ * allocation to actually make it executable. + */ + #define RTR0MemObjAllocLow(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocLowTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) +@@ -168,7 +177,10 @@ RTR0DECL(int) RTR0MemObjAllocPageTag(PRT + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. +- * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. ++ * @param fExecutable Flag indicating whether it should be permitted to ++ * executed code in the memory object. The user must ++ * use RTR0MemObjProtect after initialization the ++ * allocation to actually make it executable. + * @param pszTag Allocation tag used for statistics and such. + */ + RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); +@@ -182,7 +194,10 @@ RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. +- * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. ++ * @param fExecutable Flag indicating whether it should be permitted to ++ * executed code in the memory object. The user must ++ * use RTR0MemObjProtect after initialization the ++ * allocation to actually make it executable. + */ + #define RTR0MemObjAllocCont(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocContTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) +@@ -196,7 +211,10 @@ RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. +- * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. ++ * @param fExecutable Flag indicating whether it should be permitted to ++ * executed code in the memory object. The user must ++ * use RTR0MemObjProtect after initialization the ++ * allocation to actually make it executable. + * @param pszTag Allocation tag used for statistics and such. + */ + RTR0DECL(int) RTR0MemObjAllocContTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); +--- a/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c ++++ b/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c +@@ -38,7 +38,7 @@ + + + #if (defined(RT_ARCH_AMD64) || defined(DOXYGEN_RUNNING)) && !defined(RTMEMALLOC_EXEC_HEAP) +-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) ++# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + /** + * Starting with 2.6.23 we can use __get_vm_area and map_vm_area to allocate + * memory in the moduel range. This is preferrable to the exec heap below. +--- a/include/VBox/sup.h ++++ b/include/VBox/sup.h +@@ -1553,8 +1553,11 @@ SUPR3DECL(int) SUPR3GetSymbolR0(void *pv + * + * @returns VBox status code. + * @deprecated Use SUPR3LoadModule(pszFilename, "VMMR0.r0", &pvImageBase) ++ * @param pszFilename Full path to the VMMR0.r0 file (silly). ++ * @param pErrInfo Where to return extended error information. ++ * Optional. + */ +-SUPR3DECL(int) SUPR3LoadVMM(const char *pszFilename); ++SUPR3DECL(int) SUPR3LoadVMM(const char *pszFilename, PRTERRINFO pErrInfo); + + /** + * Unloads R0 HC VMM code. +--- a/src/VBox/Devices/Network/testcase/tstIntNet-1.cpp ++++ b/src/VBox/Devices/Network/testcase/tstIntNet-1.cpp +@@ -846,7 +846,7 @@ extern "C" DECLEXPORT(int) TrustedMain(i + return 1; + } + +- rc = SUPR3LoadVMM(szAbsPath); ++ rc = SUPR3LoadVMM(szAbsPath, NULL); + if (RT_FAILURE(rc)) + { + RTPrintf("tstIntNet-1: SUPR3LoadVMM(\"%s\") -> %Rrc\n", szAbsPath, rc); +--- a/src/VBox/NetworkServices/Dhcpd/VBoxNetDhcpd.cpp ++++ b/src/VBox/NetworkServices/Dhcpd/VBoxNetDhcpd.cpp +@@ -259,7 +259,7 @@ int VBoxNetDhcpd::vmmInit() + if (RT_SUCCESS(rc)) + rc = RTPathAppend(szPathVMMR0, sizeof(szPathVMMR0), "VMMR0.r0"); + if (RT_SUCCESS(rc)) +- rc = SUPR3LoadVMM(szPathVMMR0); ++ rc = SUPR3LoadVMM(szPathVMMR0, NULL /*pErrInfo*/); + return rc; + } + +--- a/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp ++++ b/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp +@@ -383,7 +383,7 @@ int VBoxNetBaseService::tryGoOnline(void + return rc; + } + +- rc = SUPR3LoadVMM(strcat(szPath, "/VMMR0.r0")); ++ rc = SUPR3LoadVMM(strcat(szPath, "/VMMR0.r0"), NULL); + if (RT_FAILURE(rc)) + { + LogRel(("VBoxNetBaseService: SUPR3LoadVMM(\"%s\") -> %Rrc\n", szPath, rc)); +--- a/src/VBox/VMM/testcase/tstGlobalConfig.cpp ++++ b/src/VBox/VMM/testcase/tstGlobalConfig.cpp +@@ -102,7 +102,7 @@ extern "C" DECLEXPORT(int) TrustedMain(i + return 1; + } + +- rc = SUPR3LoadVMM("./VMMR0.r0"); ++ rc = SUPR3LoadVMM("./VMMR0.r0", NULL /*pErrInfo*/); + if (RT_SUCCESS(rc)) + { + Req.pSession = pSession; +--- a/src/VBox/HostDrivers/Support/SUPLibLdr.cpp ++++ b/src/VBox/HostDrivers/Support/SUPLibLdr.cpp +@@ -334,6 +334,372 @@ static DECLCALLBACK(int) supLoadModuleCr + } + + ++/** Argument package for supLoadModuleCompileSegmentsCB. */ ++typedef struct SUPLDRCOMPSEGTABARGS ++{ ++ uint32_t uStartRva; ++ uint32_t uEndRva; ++ uint32_t fProt; ++ uint32_t iSegs; ++ uint32_t cSegsAlloc; ++ PSUPLDRSEG paSegs; ++ PRTERRINFO pErrInfo; ++} SUPLDRCOMPSEGTABARGS, *PSUPLDRCOMPSEGTABARGS; ++ ++/** ++ * @callback_method_impl{FNRTLDRENUMSEGS, ++ * Compile list of segments with the same memory protection.} ++ */ ++static DECLCALLBACK(int) supLoadModuleCompileSegmentsCB(RTLDRMOD hLdrMod, PCRTLDRSEG pSeg, void *pvUser) ++{ ++ PSUPLDRCOMPSEGTABARGS pArgs = (PSUPLDRCOMPSEGTABARGS)pvUser; ++ AssertCompile(RTMEM_PROT_READ == SUPLDR_PROT_READ); ++ AssertCompile(RTMEM_PROT_WRITE == SUPLDR_PROT_WRITE); ++ AssertCompile(RTMEM_PROT_EXEC == SUPLDR_PROT_EXEC); ++ RT_NOREF(hLdrMod); ++ ++ Log2(("supLoadModuleCompileSegmentsCB: %RTptr/%RTptr LB %RTptr/%RTptr prot %#x %s\n", ++ pSeg->LinkAddress, pSeg->RVA, pSeg->cbMapped, pSeg->cb, pSeg->fProt, pSeg->pszName)); ++ ++ /* Ignore segments not part of the loaded image. */ ++ if (pSeg->RVA == NIL_RTLDRADDR || pSeg->cbMapped == 0) ++ { ++ Log2(("supLoadModuleCompileSegmentsCB: -> skipped\n")); ++ return VINF_SUCCESS; ++ } ++ ++ /* We currently ASSUME that all relevant segments are in ascending RVA order. */ ++ AssertReturn(pSeg->RVA >= pArgs->uEndRva, ++ RTERRINFO_LOG_REL_SET_F(pArgs->pErrInfo, VERR_BAD_EXE_FORMAT, "Out of order segment: %p LB %#zx #%.*s", ++ pSeg->RVA, pSeg->cb, pSeg->cchName, pSeg->pszName)); ++ ++ /* We ASSUME the cbMapped field is implemented. */ ++ AssertReturn(pSeg->cbMapped != NIL_RTLDRADDR, VERR_INTERNAL_ERROR_2); ++ AssertReturn(pSeg->cbMapped < _1G, VERR_INTERNAL_ERROR_4); ++ uint32_t cbMapped = (uint32_t)pSeg->cbMapped; ++ AssertReturn(pSeg->RVA < _1G, VERR_INTERNAL_ERROR_3); ++ uint32_t uRvaSeg = (uint32_t)pSeg->RVA; ++ ++ /* ++ * If the protection is the same as the previous segment, ++ * just update uEndRva and continue. ++ */ ++ uint32_t fProt = pSeg->fProt; ++#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) ++ if (fProt & RTMEM_PROT_EXEC) ++ fProt |= fProt & RTMEM_PROT_READ; ++#endif ++ if (pSeg->fProt == pArgs->fProt) ++ { ++ pArgs->uEndRva = uRvaSeg + cbMapped; ++ Log2(("supLoadModuleCompileSegmentsCB: -> merged, end %#x\n", pArgs->uEndRva)); ++ return VINF_SUCCESS; ++ } ++ ++ /* ++ * The protection differs, so commit current segment and start a new one. ++ * However, if the new segment and old segment share a page, this becomes ++ * a little more complicated... ++ */ ++ if (pArgs->uStartRva < pArgs->uEndRva) ++ { ++ if (((pArgs->uEndRva - 1) >> PAGE_SHIFT) != (uRvaSeg >> PAGE_SHIFT)) ++ { ++ /* No common page, so make the new segment start on a page boundrary. */ ++ cbMapped += uRvaSeg & PAGE_OFFSET_MASK; ++ uRvaSeg &= ~(uint32_t)PAGE_OFFSET_MASK; ++ Assert(pArgs->uEndRva <= uRvaSeg); ++ Log2(("supLoadModuleCompileSegmentsCB: -> new, no common\n")); ++ } ++ else if ((fProt & pArgs->fProt) == fProt) ++ { ++ /* The current segment includes the memory protections of the ++ previous, so include the common page in it: */ ++ uint32_t const cbCommon = PAGE_SIZE - (uRvaSeg & PAGE_OFFSET_MASK); ++ if (cbCommon >= cbMapped) ++ { ++ pArgs->uEndRva = uRvaSeg + cbMapped; ++ Log2(("supLoadModuleCompileSegmentsCB: -> merge, %#x common, upgrading prot to %#x, end %#x\n", ++ cbCommon, pArgs->fProt, pArgs->uEndRva)); ++ return VINF_SUCCESS; /* New segment was smaller than a page. */ ++ } ++ cbMapped -= cbCommon; ++ uRvaSeg += cbCommon; ++ Assert(pArgs->uEndRva <= uRvaSeg); ++ Log2(("supLoadModuleCompileSegmentsCB: -> new, %#x common into previous\n", cbCommon)); ++ } ++ else if ((fProt & pArgs->fProt) == pArgs->fProt) ++ { ++ /* The new segment includes the memory protections of the ++ previous, so include the common page in it: */ ++ cbMapped += uRvaSeg & PAGE_OFFSET_MASK; ++ uRvaSeg &= ~(uint32_t)PAGE_OFFSET_MASK; ++ if (uRvaSeg == pArgs->uStartRva) ++ { ++ pArgs->fProt = fProt; ++ pArgs->uEndRva = uRvaSeg + cbMapped; ++ Log2(("supLoadModuleCompileSegmentsCB: -> upgrade current protection, end %#x\n", pArgs->uEndRva)); ++ return VINF_SUCCESS; /* Current segment was smaller than a page. */ ++ } ++ Log2(("supLoadModuleCompileSegmentsCB: -> new, %#x common into new\n", (uint32_t)(pSeg->RVA & PAGE_OFFSET_MASK))); ++ } ++ else ++ { ++ /* Create a new segment for the common page with the combined protection. */ ++ Log2(("supLoadModuleCompileSegmentsCB: -> it's complicated...\n")); ++ pArgs->uEndRva &= ~(uint32_t)PAGE_OFFSET_MASK; ++ if (pArgs->uEndRva > pArgs->uStartRva) ++ { ++ Log2(("supLoadModuleCompileSegmentsCB: SUP Seg #%u: %#x LB %#x prot %#x\n", ++ pArgs->iSegs, pArgs->uStartRva, pArgs->uEndRva - pArgs->uStartRva, pArgs->fProt)); ++ if (pArgs->paSegs) ++ { ++ AssertReturn(pArgs->iSegs < pArgs->cSegsAlloc, VERR_INTERNAL_ERROR_5); ++ pArgs->paSegs[pArgs->iSegs].off = pArgs->uStartRva; ++ pArgs->paSegs[pArgs->iSegs].cb = pArgs->uEndRva - pArgs->uStartRva; ++ pArgs->paSegs[pArgs->iSegs].fProt = pArgs->fProt; ++ pArgs->paSegs[pArgs->iSegs].fUnused = 0; ++ } ++ pArgs->iSegs++; ++ pArgs->uStartRva = pArgs->uEndRva; ++ } ++ pArgs->fProt |= fProt; ++ ++ uint32_t const cbCommon = PAGE_SIZE - (uRvaSeg & PAGE_OFFSET_MASK); ++ if (cbCommon >= cbMapped) ++ { ++ fProt |= pArgs->fProt; ++ pArgs->uEndRva = uRvaSeg + cbMapped; ++ return VINF_SUCCESS; /* New segment was smaller than a page. */ ++ } ++ cbMapped -= cbCommon; ++ uRvaSeg += cbCommon; ++ Assert(uRvaSeg - pArgs->uStartRva == PAGE_SIZE); ++ } ++ ++ /* The current segment should end where the new one starts, no gaps. */ ++ pArgs->uEndRva = uRvaSeg; ++ ++ /* Emit the current segment */ ++ Log2(("supLoadModuleCompileSegmentsCB: SUP Seg #%u: %#x LB %#x prot %#x\n", ++ pArgs->iSegs, pArgs->uStartRva, pArgs->uEndRva - pArgs->uStartRva, pArgs->fProt)); ++ if (pArgs->paSegs) ++ { ++ AssertReturn(pArgs->iSegs < pArgs->cSegsAlloc, VERR_INTERNAL_ERROR_5); ++ pArgs->paSegs[pArgs->iSegs].off = pArgs->uStartRva; ++ pArgs->paSegs[pArgs->iSegs].cb = pArgs->uEndRva - pArgs->uStartRva; ++ pArgs->paSegs[pArgs->iSegs].fProt = pArgs->fProt; ++ pArgs->paSegs[pArgs->iSegs].fUnused = 0; ++ } ++ pArgs->iSegs++; ++ } ++ /* else: current segment is empty */ ++ ++ /* Start the new segment. */ ++ Assert(!(uRvaSeg & PAGE_OFFSET_MASK)); ++ pArgs->fProt = fProt; ++ pArgs->uStartRva = uRvaSeg; ++ pArgs->uEndRva = uRvaSeg + cbMapped; ++ return VINF_SUCCESS; ++} ++ ++ ++/** ++ * Worker for supLoadModule(). ++ */ ++static int supLoadModuleInner(RTLDRMOD hLdrMod, PSUPLDRLOAD pLoadReq, uint32_t cbImageWithEverything, ++ RTR0PTR uImageBase, size_t cbImage, const char *pszModule, const char *pszFilename, ++ bool fNativeLoader, bool fIsVMMR0, const char *pszSrvReqHandler, ++ uint32_t offSymTab, uint32_t cSymbols, ++ uint32_t offStrTab, size_t cbStrTab, ++ uint32_t offSegTab, uint32_t cSegments, ++ PRTERRINFO pErrInfo) ++{ ++ /* ++ * Get the image bits. ++ */ ++ SUPLDRRESIMPARGS Args = { pszModule, pErrInfo }; ++ int rc = RTLdrGetBits(hLdrMod, &pLoadReq->u.In.abImage[0], uImageBase, supLoadModuleResolveImport, &Args); ++ if (RT_FAILURE(rc)) ++ { ++ LogRel(("SUP: RTLdrGetBits failed for %s (%s). rc=%Rrc\n", pszModule, pszFilename, rc)); ++ if (!RTErrInfoIsSet(pErrInfo)) ++ RTErrInfoSetF(pErrInfo, rc, "RTLdrGetBits failed"); ++ return rc; ++ } ++ ++ /* ++ * Get the entry points. ++ */ ++ RTUINTPTR VMMR0EntryFast = 0; ++ RTUINTPTR VMMR0EntryEx = 0; ++ RTUINTPTR SrvReqHandler = 0; ++ RTUINTPTR ModuleInit = 0; ++ RTUINTPTR ModuleTerm = 0; ++ const char *pszEp = NULL; ++ if (fIsVMMR0) ++ { ++ rc = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], uImageBase, ++ UINT32_MAX, pszEp = "VMMR0EntryFast", &VMMR0EntryFast); ++ if (RT_SUCCESS(rc)) ++ rc = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], uImageBase, ++ UINT32_MAX, pszEp = "VMMR0EntryEx", &VMMR0EntryEx); ++ } ++ else if (pszSrvReqHandler) ++ rc = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], uImageBase, ++ UINT32_MAX, pszEp = pszSrvReqHandler, &SrvReqHandler); ++ if (RT_SUCCESS(rc)) ++ { ++ int rc2 = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], uImageBase, ++ UINT32_MAX, pszEp = "ModuleInit", &ModuleInit); ++ if (RT_FAILURE(rc2)) ++ ModuleInit = 0; ++ ++ rc2 = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], uImageBase, ++ UINT32_MAX, pszEp = "ModuleTerm", &ModuleTerm); ++ if (RT_FAILURE(rc2)) ++ ModuleTerm = 0; ++ } ++ if (RT_FAILURE(rc)) ++ { ++ LogRel(("SUP: Failed to get entry point '%s' for %s (%s) rc=%Rrc\n", pszEp, pszModule, pszFilename, rc)); ++ return RTErrInfoSetF(pErrInfo, rc, "Failed to resolve entry point '%s'", pszEp); ++ } ++ ++ /* ++ * Create the symbol and string tables. ++ */ ++ SUPLDRCREATETABSARGS CreateArgs; ++ CreateArgs.cbImage = cbImage; ++ CreateArgs.pSym = (PSUPLDRSYM)&pLoadReq->u.In.abImage[offSymTab]; ++ CreateArgs.pszBase = (char *)&pLoadReq->u.In.abImage[offStrTab]; ++ CreateArgs.psz = CreateArgs.pszBase; ++ rc = RTLdrEnumSymbols(hLdrMod, 0, NULL, 0, supLoadModuleCreateTabsCB, &CreateArgs); ++ if (RT_FAILURE(rc)) ++ { ++ LogRel(("SUP: RTLdrEnumSymbols failed for %s (%s) rc=%Rrc\n", pszModule, pszFilename, rc)); ++ return RTErrInfoSetF(pErrInfo, rc, "RTLdrEnumSymbols #2 failed"); ++ } ++ AssertRelease((size_t)(CreateArgs.psz - CreateArgs.pszBase) <= cbStrTab); ++ AssertRelease((size_t)(CreateArgs.pSym - (PSUPLDRSYM)&pLoadReq->u.In.abImage[offSymTab]) <= cSymbols); ++ ++ /* ++ * Create the segment table. ++ */ ++ SUPLDRCOMPSEGTABARGS SegArgs; ++ SegArgs.uStartRva = 0; ++ SegArgs.uEndRva = 0; ++ SegArgs.fProt = RTMEM_PROT_READ; ++ SegArgs.iSegs = 0; ++ SegArgs.cSegsAlloc = cSegments; ++ SegArgs.paSegs = (PSUPLDRSEG)&pLoadReq->u.In.abImage[offSegTab]; ++ SegArgs.pErrInfo = pErrInfo; ++ rc = RTLdrEnumSegments(hLdrMod, supLoadModuleCompileSegmentsCB, &SegArgs); ++ if (RT_FAILURE(rc)) ++ { ++ LogRel(("SUP: RTLdrEnumSegments failed for %s (%s) rc=%Rrc\n", pszModule, pszFilename, rc)); ++ return RTErrInfoSetF(pErrInfo, rc, "RTLdrEnumSegments #2 failed"); ++ } ++ SegArgs.uEndRva = (uint32_t)cbImage; ++ AssertReturn(SegArgs.uEndRva == cbImage, VERR_OUT_OF_RANGE); ++ if (SegArgs.uEndRva > SegArgs.uStartRva) ++ { ++ SegArgs.paSegs[SegArgs.iSegs].off = SegArgs.uStartRva; ++ SegArgs.paSegs[SegArgs.iSegs].cb = SegArgs.uEndRva - SegArgs.uStartRva; ++ SegArgs.paSegs[SegArgs.iSegs].fProt = SegArgs.fProt; ++ SegArgs.paSegs[SegArgs.iSegs].fUnused = 0; ++ SegArgs.iSegs++; ++ } ++ for (uint32_t i = 0; i < SegArgs.iSegs; i++) ++ LogRel(("SUP: seg #%u: %c%c%c %#010RX32 LB %#010RX32\n", i, /** @todo LogRel2 */ ++ SegArgs.paSegs[i].fProt & SUPLDR_PROT_READ ? 'R' : ' ', ++ SegArgs.paSegs[i].fProt & SUPLDR_PROT_WRITE ? 'W' : ' ', ++ SegArgs.paSegs[i].fProt & SUPLDR_PROT_EXEC ? 'X' : ' ', ++ SegArgs.paSegs[i].off, SegArgs.paSegs[i].cb)); ++ AssertRelease(SegArgs.iSegs == cSegments); ++ AssertRelease(SegArgs.cSegsAlloc == cSegments); ++ ++ /* ++ * Upload the image. ++ */ ++ pLoadReq->Hdr.u32Cookie = g_u32Cookie; ++ pLoadReq->Hdr.u32SessionCookie = g_u32SessionCookie; ++ pLoadReq->Hdr.cbIn = SUP_IOCTL_LDR_LOAD_SIZE_IN(cbImageWithEverything); ++ pLoadReq->Hdr.cbOut = SUP_IOCTL_LDR_LOAD_SIZE_OUT; ++ pLoadReq->Hdr.fFlags = SUPREQHDR_FLAGS_MAGIC | SUPREQHDR_FLAGS_EXTRA_IN; ++ pLoadReq->Hdr.rc = VERR_INTERNAL_ERROR; ++ ++ pLoadReq->u.In.pfnModuleInit = (RTR0PTR)ModuleInit; ++ pLoadReq->u.In.pfnModuleTerm = (RTR0PTR)ModuleTerm; ++ if (fIsVMMR0) ++ { ++ pLoadReq->u.In.eEPType = SUPLDRLOADEP_VMMR0; ++ pLoadReq->u.In.EP.VMMR0.pvVMMR0 = uImageBase; ++ pLoadReq->u.In.EP.VMMR0.pvVMMR0EntryFast= (RTR0PTR)VMMR0EntryFast; ++ pLoadReq->u.In.EP.VMMR0.pvVMMR0EntryEx = (RTR0PTR)VMMR0EntryEx; ++ } ++ else if (pszSrvReqHandler) ++ { ++ pLoadReq->u.In.eEPType = SUPLDRLOADEP_SERVICE; ++ pLoadReq->u.In.EP.Service.pfnServiceReq = (RTR0PTR)SrvReqHandler; ++ pLoadReq->u.In.EP.Service.apvReserved[0] = NIL_RTR0PTR; ++ pLoadReq->u.In.EP.Service.apvReserved[1] = NIL_RTR0PTR; ++ pLoadReq->u.In.EP.Service.apvReserved[2] = NIL_RTR0PTR; ++ } ++ else ++ pLoadReq->u.In.eEPType = SUPLDRLOADEP_NOTHING; ++ pLoadReq->u.In.offStrTab = offStrTab; ++ pLoadReq->u.In.cbStrTab = (uint32_t)cbStrTab; ++ AssertRelease(pLoadReq->u.In.cbStrTab == cbStrTab); ++ pLoadReq->u.In.cbImageBits = (uint32_t)cbImage; ++ pLoadReq->u.In.offSymbols = offSymTab; ++ pLoadReq->u.In.cSymbols = cSymbols; ++ pLoadReq->u.In.offSegments = offSegTab; ++ pLoadReq->u.In.cSegments = cSegments; ++ pLoadReq->u.In.cbImageWithEverything = cbImageWithEverything; ++ pLoadReq->u.In.pvImageBase = uImageBase; ++ if (!g_uSupFakeMode) ++ { ++ rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_LDR_LOAD, pLoadReq, SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithEverything)); ++ if (RT_SUCCESS(rc)) ++ rc = pLoadReq->Hdr.rc; ++ else ++ LogRel(("SUP: SUP_IOCTL_LDR_LOAD ioctl for %s (%s) failed rc=%Rrc\n", pszModule, pszFilename, rc)); ++ } ++ else ++ rc = VINF_SUCCESS; ++ if ( RT_SUCCESS(rc) ++ || rc == VERR_ALREADY_LOADED /* A competing process. */ ++ ) ++ { ++ LogRel(("SUP: Loaded %s (%s) at %#RKv - ModuleInit at %RKv and ModuleTerm at %RKv%s\n", ++ pszModule, pszFilename, uImageBase, (RTR0PTR)ModuleInit, (RTR0PTR)ModuleTerm, ++ fNativeLoader ? " using the native ring-0 loader" : "")); ++ if (fIsVMMR0) ++ { ++ g_pvVMMR0 = uImageBase; ++ LogRel(("SUP: VMMR0EntryEx located at %RKv and VMMR0EntryFast at %RKv\n", (RTR0PTR)VMMR0EntryEx, (RTR0PTR)VMMR0EntryFast)); ++ } ++#ifdef RT_OS_WINDOWS ++ LogRel(("SUP: windbg> .reload /f %s=%#RKv\n", pszFilename, uImageBase)); ++#endif ++ return VINF_SUCCESS; ++ } ++ ++ /* ++ * Failed, bail out. ++ */ ++ LogRel(("SUP: Loading failed for %s (%s) rc=%Rrc\n", pszModule, pszFilename, rc)); ++ if ( pLoadReq->u.Out.uErrorMagic == SUPLDRLOAD_ERROR_MAGIC ++ && pLoadReq->u.Out.szError[0] != '\0') ++ { ++ LogRel(("SUP: %s\n", pLoadReq->u.Out.szError)); ++ return RTErrInfoSet(pErrInfo, rc, pLoadReq->u.Out.szError); ++ } ++ return RTErrInfoSet(pErrInfo, rc, "SUP_IOCTL_LDR_LOAD failed"); ++} ++ ++ + /** + * Worker for SUPR3LoadModule(). + * +@@ -356,6 +722,7 @@ static int supLoadModule(const char *psz + AssertPtrReturn(pszFilename, VERR_INVALID_PARAMETER); + AssertPtrReturn(pszModule, VERR_INVALID_PARAMETER); + AssertPtrReturn(ppvImageBase, VERR_INVALID_PARAMETER); ++ /** @todo abspath it right into SUPLDROPEN */ + AssertReturn(strlen(pszModule) < RT_SIZEOFMEMB(SUPLDROPEN, u.In.szName), VERR_FILENAME_TOO_LONG); + char szAbsFilename[RT_SIZEOFMEMB(SUPLDROPEN, u.In.szFilename)]; + rc = RTPathAbs(pszFilename, szAbsFilename, sizeof(szAbsFilename)); +@@ -371,8 +738,8 @@ static int supLoadModule(const char *psz + * Open image file and figure its size. + */ + RTLDRMOD hLdrMod; +- rc = RTLdrOpen(pszFilename, 0, RTLDRARCH_HOST, &hLdrMod); +- if (!RT_SUCCESS(rc)) ++ rc = RTLdrOpenEx(pszFilename, 0 /*fFlags*/, RTLDRARCH_HOST, &hLdrMod, pErrInfo); ++ if (RT_FAILURE(rc)) + { + LogRel(("SUP: RTLdrOpen failed for %s (%s) %Rrc\n", pszModule, pszFilename, rc)); + return rc; +@@ -385,230 +752,109 @@ static int supLoadModule(const char *psz + rc = RTLdrEnumSymbols(hLdrMod, 0, NULL, 0, supLoadModuleCalcSizeCB, &CalcArgs); + if (RT_SUCCESS(rc)) + { +- const uint32_t offSymTab = RT_ALIGN_32(CalcArgs.cbImage, 8); +- const uint32_t offStrTab = offSymTab + CalcArgs.cSymbols * sizeof(SUPLDRSYM); +- const uint32_t cbImageWithTabs = RT_ALIGN_32(offStrTab + CalcArgs.cbStrings, 8); +- + /* +- * Open the R0 image. ++ * Figure out the number of segments needed first. + */ +- SUPLDROPEN OpenReq; +- OpenReq.Hdr.u32Cookie = g_u32Cookie; +- OpenReq.Hdr.u32SessionCookie = g_u32SessionCookie; +- OpenReq.Hdr.cbIn = SUP_IOCTL_LDR_OPEN_SIZE_IN; +- OpenReq.Hdr.cbOut = SUP_IOCTL_LDR_OPEN_SIZE_OUT; +- OpenReq.Hdr.fFlags = SUPREQHDR_FLAGS_DEFAULT; +- OpenReq.Hdr.rc = VERR_INTERNAL_ERROR; +- OpenReq.u.In.cbImageWithTabs = cbImageWithTabs; +- OpenReq.u.In.cbImageBits = (uint32_t)CalcArgs.cbImage; +- strcpy(OpenReq.u.In.szName, pszModule); +- strcpy(OpenReq.u.In.szFilename, pszFilename); +- if (!g_uSupFakeMode) +- { +- rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_LDR_OPEN, &OpenReq, SUP_IOCTL_LDR_OPEN_SIZE); +- if (RT_SUCCESS(rc)) +- rc = OpenReq.Hdr.rc; +- } +- else +- { +- OpenReq.u.Out.fNeedsLoading = true; +- OpenReq.u.Out.pvImageBase = 0xef423420; +- } +- *ppvImageBase = (void *)OpenReq.u.Out.pvImageBase; +- if ( RT_SUCCESS(rc) +- && OpenReq.u.Out.fNeedsLoading) ++ SUPLDRCOMPSEGTABARGS SegArgs; ++ SegArgs.uStartRva = 0; ++ SegArgs.uEndRva = 0; ++ SegArgs.fProt = RTMEM_PROT_READ; ++ SegArgs.iSegs = 0; ++ SegArgs.cSegsAlloc = 0; ++ SegArgs.paSegs = NULL; ++ SegArgs.pErrInfo = pErrInfo; ++ rc = RTLdrEnumSegments(hLdrMod, supLoadModuleCompileSegmentsCB, &SegArgs); ++ if (RT_SUCCESS(rc)) + { ++ Assert(SegArgs.uEndRva <= RTLdrSize(hLdrMod)); ++ SegArgs.uEndRva = (uint32_t)CalcArgs.cbImage; /* overflow is checked later */ ++ if (SegArgs.uEndRva > SegArgs.uStartRva) ++ { ++ Log2(("supLoadModule: SUP Seg #%u: %#x LB %#x prot %#x\n", ++ SegArgs.iSegs, SegArgs.uStartRva, SegArgs.uEndRva - SegArgs.uStartRva, SegArgs.fProt)); ++ SegArgs.iSegs++; ++ } ++ ++ const uint32_t offSymTab = RT_ALIGN_32(CalcArgs.cbImage, 8); ++ const uint32_t offStrTab = offSymTab + CalcArgs.cSymbols * sizeof(SUPLDRSYM); ++ const uint32_t offSegTab = RT_ALIGN_32(offStrTab + CalcArgs.cbStrings, 8); ++ const uint32_t cbImageWithEverything = RT_ALIGN_32(offSegTab + sizeof(SUPLDRSEG) * SegArgs.iSegs, 8); ++ + /* +- * We need to load it. +- * Allocate memory for the image bits. ++ * Open the R0 image. + */ +- PSUPLDRLOAD pLoadReq = (PSUPLDRLOAD)RTMemTmpAlloc(SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithTabs)); +- if (pLoadReq) ++ SUPLDROPEN OpenReq; ++ OpenReq.Hdr.u32Cookie = g_u32Cookie; ++ OpenReq.Hdr.u32SessionCookie = g_u32SessionCookie; ++ OpenReq.Hdr.cbIn = SUP_IOCTL_LDR_OPEN_SIZE_IN; ++ OpenReq.Hdr.cbOut = SUP_IOCTL_LDR_OPEN_SIZE_OUT; ++ OpenReq.Hdr.fFlags = SUPREQHDR_FLAGS_DEFAULT; ++ OpenReq.Hdr.rc = VERR_INTERNAL_ERROR; ++ OpenReq.u.In.cbImageWithEverything = cbImageWithEverything; ++ OpenReq.u.In.cbImageBits = (uint32_t)CalcArgs.cbImage; ++ strcpy(OpenReq.u.In.szName, pszModule); ++ strcpy(OpenReq.u.In.szFilename, pszFilename); ++ if (!g_uSupFakeMode) ++ { ++ rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_LDR_OPEN, &OpenReq, SUP_IOCTL_LDR_OPEN_SIZE); ++ if (RT_SUCCESS(rc)) ++ rc = OpenReq.Hdr.rc; ++ } ++ else ++ { ++ OpenReq.u.Out.fNeedsLoading = true; ++ OpenReq.u.Out.pvImageBase = 0xef423420; ++ } ++ *ppvImageBase = (void *)OpenReq.u.Out.pvImageBase; ++ if ( RT_SUCCESS(rc) ++ && OpenReq.u.Out.fNeedsLoading) + { + /* +- * Get the image bits. ++ * We need to load it. ++ * ++ * Allocate the request and pass it to an inner work function ++ * that populates it and sends it off to the driver. + */ +- +- SUPLDRRESIMPARGS Args = { pszModule, pErrInfo }; +- rc = RTLdrGetBits(hLdrMod, &pLoadReq->u.In.abImage[0], (uintptr_t)OpenReq.u.Out.pvImageBase, +- supLoadModuleResolveImport, &Args); +- +- if (RT_SUCCESS(rc)) ++ const uint32_t cbLoadReq = SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithEverything); ++ PSUPLDRLOAD pLoadReq = (PSUPLDRLOAD)RTMemTmpAlloc(cbLoadReq); ++ if (pLoadReq) + { +- /* +- * Get the entry points. +- */ +- RTUINTPTR VMMR0EntryFast = 0; +- RTUINTPTR VMMR0EntryEx = 0; +- RTUINTPTR SrvReqHandler = 0; +- RTUINTPTR ModuleInit = 0; +- RTUINTPTR ModuleTerm = 0; +- const char *pszEp = NULL; +- if (fIsVMMR0) +- { +- rc = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], (uintptr_t)OpenReq.u.Out.pvImageBase, +- UINT32_MAX, pszEp = "VMMR0EntryFast", &VMMR0EntryFast); +- if (RT_SUCCESS(rc)) +- rc = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], (uintptr_t)OpenReq.u.Out.pvImageBase, +- UINT32_MAX, pszEp = "VMMR0EntryEx", &VMMR0EntryEx); +- } +- else if (pszSrvReqHandler) +- rc = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], (uintptr_t)OpenReq.u.Out.pvImageBase, +- UINT32_MAX, pszEp = pszSrvReqHandler, &SrvReqHandler); +- if (RT_SUCCESS(rc)) +- { +- int rc2 = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], (uintptr_t)OpenReq.u.Out.pvImageBase, +- UINT32_MAX, pszEp = "ModuleInit", &ModuleInit); +- if (RT_FAILURE(rc2)) +- ModuleInit = 0; +- +- rc2 = RTLdrGetSymbolEx(hLdrMod, &pLoadReq->u.In.abImage[0], (uintptr_t)OpenReq.u.Out.pvImageBase, +- UINT32_MAX, pszEp = "ModuleTerm", &ModuleTerm); +- if (RT_FAILURE(rc2)) +- ModuleTerm = 0; +- } +- if (RT_SUCCESS(rc)) +- { +- /* +- * Create the symbol and string tables. +- */ +- SUPLDRCREATETABSARGS CreateArgs; +- CreateArgs.cbImage = CalcArgs.cbImage; +- CreateArgs.pSym = (PSUPLDRSYM)&pLoadReq->u.In.abImage[offSymTab]; +- CreateArgs.pszBase = (char *)&pLoadReq->u.In.abImage[offStrTab]; +- CreateArgs.psz = CreateArgs.pszBase; +- rc = RTLdrEnumSymbols(hLdrMod, 0, NULL, 0, supLoadModuleCreateTabsCB, &CreateArgs); +- if (RT_SUCCESS(rc)) +- { +- AssertRelease((size_t)(CreateArgs.psz - CreateArgs.pszBase) <= CalcArgs.cbStrings); +- AssertRelease((size_t)(CreateArgs.pSym - (PSUPLDRSYM)&pLoadReq->u.In.abImage[offSymTab]) <= CalcArgs.cSymbols); +- +- /* +- * Upload the image. +- */ +- pLoadReq->Hdr.u32Cookie = g_u32Cookie; +- pLoadReq->Hdr.u32SessionCookie = g_u32SessionCookie; +- pLoadReq->Hdr.cbIn = SUP_IOCTL_LDR_LOAD_SIZE_IN(cbImageWithTabs); +- pLoadReq->Hdr.cbOut = SUP_IOCTL_LDR_LOAD_SIZE_OUT; +- pLoadReq->Hdr.fFlags = SUPREQHDR_FLAGS_MAGIC | SUPREQHDR_FLAGS_EXTRA_IN; +- pLoadReq->Hdr.rc = VERR_INTERNAL_ERROR; +- +- pLoadReq->u.In.pfnModuleInit = (RTR0PTR)ModuleInit; +- pLoadReq->u.In.pfnModuleTerm = (RTR0PTR)ModuleTerm; +- if (fIsVMMR0) +- { +- pLoadReq->u.In.eEPType = SUPLDRLOADEP_VMMR0; +- pLoadReq->u.In.EP.VMMR0.pvVMMR0 = OpenReq.u.Out.pvImageBase; +- pLoadReq->u.In.EP.VMMR0.pvVMMR0EntryFast= (RTR0PTR)VMMR0EntryFast; +- pLoadReq->u.In.EP.VMMR0.pvVMMR0EntryEx = (RTR0PTR)VMMR0EntryEx; +- } +- else if (pszSrvReqHandler) +- { +- pLoadReq->u.In.eEPType = SUPLDRLOADEP_SERVICE; +- pLoadReq->u.In.EP.Service.pfnServiceReq = (RTR0PTR)SrvReqHandler; +- pLoadReq->u.In.EP.Service.apvReserved[0] = NIL_RTR0PTR; +- pLoadReq->u.In.EP.Service.apvReserved[1] = NIL_RTR0PTR; +- pLoadReq->u.In.EP.Service.apvReserved[2] = NIL_RTR0PTR; +- } +- else +- pLoadReq->u.In.eEPType = SUPLDRLOADEP_NOTHING; +- pLoadReq->u.In.offStrTab = offStrTab; +- pLoadReq->u.In.cbStrTab = (uint32_t)CalcArgs.cbStrings; +- AssertRelease(pLoadReq->u.In.cbStrTab == CalcArgs.cbStrings); +- pLoadReq->u.In.cbImageBits = (uint32_t)CalcArgs.cbImage; +- pLoadReq->u.In.offSymbols = offSymTab; +- pLoadReq->u.In.cSymbols = CalcArgs.cSymbols; +- pLoadReq->u.In.cbImageWithTabs = cbImageWithTabs; +- pLoadReq->u.In.pvImageBase = OpenReq.u.Out.pvImageBase; +- if (!g_uSupFakeMode) +- { +- rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_LDR_LOAD, pLoadReq, SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithTabs)); +- if (RT_SUCCESS(rc)) +- rc = pLoadReq->Hdr.rc; +- else +- LogRel(("SUP: SUP_IOCTL_LDR_LOAD ioctl for %s (%s) failed rc=%Rrc\n", pszModule, pszFilename, rc)); +- } +- else +- rc = VINF_SUCCESS; +- if ( RT_SUCCESS(rc) +- || rc == VERR_ALREADY_LOADED /* A competing process. */ +- ) +- { +- LogRel(("SUP: Loaded %s (%s) at %#RKv - ModuleInit at %RKv and ModuleTerm at %RKv%s\n", +- pszModule, pszFilename, OpenReq.u.Out.pvImageBase, (RTR0PTR)ModuleInit, (RTR0PTR)ModuleTerm, +- OpenReq.u.Out.fNativeLoader ? " using the native ring-0 loader" : "")); +- if (fIsVMMR0) +- { +- g_pvVMMR0 = OpenReq.u.Out.pvImageBase; +- LogRel(("SUP: VMMR0EntryEx located at %RKv and VMMR0EntryFast at %RKv\n", (RTR0PTR)VMMR0EntryEx, (RTR0PTR)VMMR0EntryFast)); +- } +-#ifdef RT_OS_WINDOWS +- LogRel(("SUP: windbg> .reload /f %s=%#RKv\n", pszFilename, OpenReq.u.Out.pvImageBase)); +-#endif +- +- RTMemTmpFree(pLoadReq); +- RTLdrClose(hLdrMod); +- return VINF_SUCCESS; +- } +- +- /* +- * Failed, bail out. +- */ +- LogRel(("SUP: Loading failed for %s (%s) rc=%Rrc\n", pszModule, pszFilename, rc)); +- if ( pLoadReq->u.Out.uErrorMagic == SUPLDRLOAD_ERROR_MAGIC +- && pLoadReq->u.Out.szError[0] != '\0') +- { +- LogRel(("SUP: %s\n", pLoadReq->u.Out.szError)); +- RTErrInfoSet(pErrInfo, rc, pLoadReq->u.Out.szError); +- } +- else +- RTErrInfoSet(pErrInfo, rc, "SUP_IOCTL_LDR_LOAD failed"); +- } +- else +- { +- LogRel(("SUP: RTLdrEnumSymbols failed for %s (%s) rc=%Rrc\n", pszModule, pszFilename, rc)); +- RTErrInfoSetF(pErrInfo, rc, "RTLdrEnumSymbols #2 failed"); +- } +- } +- else +- { +- LogRel(("SUP: Failed to get entry point '%s' for %s (%s) rc=%Rrc\n", pszEp, pszModule, pszFilename, rc)); +- RTErrInfoSetF(pErrInfo, rc, "Failed to resolve entry point '%s'", pszEp); +- } ++ rc = supLoadModuleInner(hLdrMod, pLoadReq, cbImageWithEverything, OpenReq.u.Out.pvImageBase, CalcArgs.cbImage, ++ pszModule, pszFilename, OpenReq.u.Out.fNativeLoader, fIsVMMR0, pszSrvReqHandler, ++ offSymTab, CalcArgs.cSymbols, ++ offStrTab, CalcArgs.cbStrings, ++ offSegTab, SegArgs.iSegs, ++ pErrInfo); ++ RTMemTmpFree(pLoadReq); + } + else + { +- LogRel(("SUP: RTLdrGetBits failed for %s (%s). rc=%Rrc\n", pszModule, pszFilename, rc)); +- if (!RTErrInfoIsSet(pErrInfo)) +- RTErrInfoSetF(pErrInfo, rc, "RTLdrGetBits failed"); ++ AssertMsgFailed(("failed to allocated %u bytes for SUPLDRLOAD_IN structure!\n", SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithEverything))); ++ rc = RTErrInfoSetF(pErrInfo, VERR_NO_TMP_MEMORY, "Failed to allocate %u bytes for the load request", ++ SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithEverything)); + } +- RTMemTmpFree(pLoadReq); + } +- else ++ /* ++ * Already loaded? ++ */ ++ else if (RT_SUCCESS(rc)) + { +- AssertMsgFailed(("failed to allocated %u bytes for SUPLDRLOAD_IN structure!\n", SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithTabs))); +- rc = VERR_NO_TMP_MEMORY; +- RTErrInfoSetF(pErrInfo, rc, "Failed to allocate %u bytes for the load request", SUP_IOCTL_LDR_LOAD_SIZE(cbImageWithTabs)); +- } +- } +- /* +- * Already loaded? +- */ +- else if (RT_SUCCESS(rc)) +- { +- if (fIsVMMR0) +- g_pvVMMR0 = OpenReq.u.Out.pvImageBase; +- LogRel(("SUP: Opened %s (%s) at %#RKv%s.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase, +- OpenReq.u.Out.fNativeLoader ? " loaded by the native ring-0 loader" : "")); ++ if (fIsVMMR0) ++ g_pvVMMR0 = OpenReq.u.Out.pvImageBase; ++ LogRel(("SUP: Opened %s (%s) at %#RKv%s.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase, ++ OpenReq.u.Out.fNativeLoader ? " loaded by the native ring-0 loader" : "")); + #ifdef RT_OS_WINDOWS +- LogRel(("SUP: windbg> .reload /f %s=%#RKv\n", pszFilename, OpenReq.u.Out.pvImageBase)); ++ LogRel(("SUP: windbg> .reload /f %s=%#RKv\n", pszFilename, OpenReq.u.Out.pvImageBase)); + #endif ++ } ++ /* ++ * No, failed. ++ */ ++ else ++ RTErrInfoSet(pErrInfo, rc, "SUP_IOCTL_LDR_OPEN failed"); + } +- /* +- * No, failed. +- */ +- else +- RTErrInfoSet(pErrInfo, rc, "SUP_IOCTL_LDR_OPEN failed"); ++ else if (!RTErrInfoIsSet(pErrInfo) && pErrInfo) ++ RTErrInfoSetF(pErrInfo, rc, "RTLdrEnumSegments #1 failed"); + } + else + RTErrInfoSetF(pErrInfo, rc, "RTLdrEnumSymbols #1 failed"); +@@ -682,10 +928,10 @@ SUPR3DECL(int) SUPR3GetSymbolR0(void *pv + } + + +-SUPR3DECL(int) SUPR3LoadVMM(const char *pszFilename) ++SUPR3DECL(int) SUPR3LoadVMM(const char *pszFilename, PRTERRINFO pErrInfo) + { + void *pvImageBase; +- return SUPR3LoadModule(pszFilename, "VMMR0.r0", &pvImageBase, NULL /*pErrInfo*/); ++ return SUPR3LoadModule(pszFilename, "VMMR0.r0", &pvImageBase, pErrInfo); + } + + +--- a/src/VBox/HostDrivers/Support/testcase/tstInt.cpp ++++ b/src/VBox/HostDrivers/Support/testcase/tstInt.cpp +@@ -76,7 +76,8 @@ int main(int argc, char **argv) + /* + * Load VMM code. + */ +- rc = SUPR3LoadVMM(szAbsFile); ++ RTERRINFOSTATIC ErrInfo; ++ rc = SUPR3LoadVMM(szAbsFile, RTErrInfoInitStatic(&ErrInfo)); + if (RT_SUCCESS(rc)) + { + /* +@@ -208,7 +209,7 @@ int main(int argc, char **argv) + } + else + { +- RTPrintf("tstInt: SUPR3LoadVMM failed with rc=%Rrc\n", rc); ++ RTPrintf("tstInt: SUPR3LoadVMM failed with rc=%Rrc%#RTeim\n", rc, &ErrInfo.Core); + rcRet++; + } + +--- a/src/VBox/Devices/Makefile.kmk ++++ b/src/VBox/Devices/Makefile.kmk +@@ -52,7 +52,7 @@ if !defined(VBOX_ONLY_EXTPACKS) + if1of ($(KBUILD_TARGET_ARCH), $(VBOX_SUPPORTED_HOST_ARCHS)) + LIBRARIES += ServicesR0 + DLLS += VBoxDDU VBoxDD VBoxDD2 +- SYSMODS += VBoxDDR0 ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VBoxDDR0 + ifdef VBOX_WITH_RAW_MODE + SYSMODS += VBoxDDRC + endif +@@ -1370,7 +1370,7 @@ if defined(VBOX_WITH_EXTPACK) && defined + USB/DevXHCI.cpp + $(call VBOX_SET_VER_INFO_DLL,VBoxEhciR3,PUEL Extension Pack - EHCI Device) + +- SYSMODS += VBoxEhciR0 ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VBoxEhciR0 + VBoxEhciR0_TEMPLATE = VBoxR0ExtPackPuel + VBoxEhciR0_SOURCES = \ + USB/DevEHCI.cpp \ +@@ -1406,7 +1406,7 @@ if defined(VBOX_WITH_EXTPACK) && defined + VBoxPciRawDrv_SOURCES = Bus/DrvPciRaw.cpp + $(call VBOX_SET_VER_INFO_DLL,VBoxPciRawDrv,PUEL Extension Pack - PCI Passthrough Driver) + +- SYSMODS += VBoxPciRawR0 ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VBoxPciRawR0 + VBoxPciRawR0_TEMPLATE = VBoxR0ExtPackPuel + VBoxPciRawR0_SOURCES = Bus/DevPciRaw.cpp + $(call VBOX_SET_VER_INFO_R0,VBoxPciRawR0,PUEL Extension Pack - PCI Passthrough Driver$(COMMA) ring-0) +@@ -1424,7 +1424,7 @@ if defined(VBOX_WITH_EXTPACK) && defined + Storage/DevNVMe.cpp + $(call VBOX_SET_VER_INFO_DLL,VBoxNvmeR3,PUEL Extension Pack - NVMe Device) + +- SYSMODS += VBoxNvmeR0 ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VBoxNvmeR0 + VBoxNvmeR0_TEMPLATE = VBoxR0ExtPackPuel + VBoxNvmeR0_SOURCES = \ + Storage/DevNVMe.cpp +--- a/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk ++++ b/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk +@@ -242,7 +242,7 @@ if defined(VBOX_WITH_EXTPACK_VBOXDTRACE) + # The ring-0 part of VBoxDTrace. + # + ifneq ($(KBUILD_TARGET),solaris) # disabled on solaris - neiter needed nor currently able to build it here. +- SYSMODS += VBoxDTraceR0 ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VBoxDTraceR0 + endif + VBoxDTraceR0_TEMPLATE = VBoxR0ExtPackDTrace + VBoxDTraceR0_DEFS = IN_VBOXDTRACE_R0 IN_RT_R0 +--- a/src/VBox/ExtPacks/BusMouseSample/Makefile.kmk ++++ b/src/VBox/ExtPacks/BusMouseSample/Makefile.kmk +@@ -83,7 +83,7 @@ DLLS += VBoxBusMouseR3 + VBoxBusMouseR3_TEMPLATE = VBoxR3ExtPackBusMouse + VBoxBusMouseR3_SOURCES = DevBusMouse.cpp + +-SYSMODS += VBoxBusMouseR0 ++$(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VBoxBusMouseR0 + VBoxBusMouseR0_TEMPLATE = VBoxR0ExtPackBusMouse + VBoxBusMouseR0_SOURCES = DevBusMouse.cpp + +--- a/src/VBox/Runtime/testcase/Makefile.kmk ++++ b/src/VBox/Runtime/testcase/Makefile.kmk +@@ -210,13 +210,13 @@ if1of ($(KBUILD_TARGET_ARCH), amd64 x86) + tstRTR0ThreadDriver + endif + if1of ($(KBUILD_TARGET_ARCH), $(VBOX_SUPPORTED_HOST_ARCHS)) +- SYSMODS += \ ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += \ + tstLdrObjR0 + ifdef VBOX_WITH_RAW_MODE + SYSMODS += tstLdrObj + endif + endif +- SYSMODS += \ ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += \ + tstRTR0MemUserKernel \ + tstRTR0SemMutex \ + tstRTR0Timer \ +@@ -224,7 +224,7 @@ if1of ($(KBUILD_TARGET_ARCH), amd64 x86) + tstRTR0Thread + if1of ($(KBUILD_TARGET), solaris darwin) + PROGRAMS += tstRTR0DbgKrnlInfoDriver +- SYSMODS += tstRTR0DbgKrnlInfo ++ $(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += tstRTR0DbgKrnlInfo + endif # VBOX_SUPPORTED_HOST_ARCHS only + + endif +--- a/src/VBox/VMM/Makefile.kmk ++++ b/src/VBox/VMM/Makefile.kmk +@@ -435,7 +435,7 @@ ifndef VBOX_ONLY_EXTPACKS + # + # VMMR0.r0 + # +-SYSMODS += VMMR0 ++$(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += VMMR0 + VMMR0_TEMPLATE = VBoxR0 + VMMR0_SYSSUFF = .r0 + +--- a/src/VBox/ValidationKit/utils/misc/Makefile.kmk ++++ b/src/VBox/ValidationKit/utils/misc/Makefile.kmk +@@ -31,7 +31,7 @@ PROGRAMS += LoadGenerator + LoadGenerator_TEMPLATE = VBoxValidationKitR3Host + LoadGenerator_SOURCES = loadgenerator.cpp + +-SYSMODS += loadgeneratorR0 ++$(if-expr defined(VBOX_WITH_VBOXR0_AS_DLL),DLLS,SYSMODS) += loadgeneratorR0 + loadgeneratorR0_TEMPLATE = VBoxValidationKitR0 + loadgeneratorR0_SOURCES = loadgeneratorR0.cpp + +--- a/src/VBox/HostDrivers/Support/SUPLib.cpp ++++ b/src/VBox/HostDrivers/Support/SUPLib.cpp +@@ -275,9 +275,9 @@ SUPR3DECL(int) SUPR3InitEx(bool fUnrestr + CookieReq.Hdr.rc = VERR_INTERNAL_ERROR; + strcpy(CookieReq.u.In.szMagic, SUPCOOKIE_MAGIC); + CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION; +- const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x002d0000 ++ const uint32_t uMinVersion = /*(SUPDRV_IOC_VERSION & 0xffff0000) == 0x002d0000 + ? 0x002d0001 +- : SUPDRV_IOC_VERSION & 0xffff0000; ++ :*/ SUPDRV_IOC_VERSION & 0xffff0000; + CookieReq.u.In.u32MinVersion = uMinVersion; + rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_COOKIE, &CookieReq, SUP_IOCTL_COOKIE_SIZE); + if ( RT_SUCCESS(rc) +--- a/src/VBox/HostDrivers/Support/SUPDrvIOC.h ++++ b/src/VBox/HostDrivers/Support/SUPDrvIOC.h +@@ -220,9 +220,10 @@ typedef SUPREQHDR *PSUPREQHDR; + * -# When increment the major number, execute all pending work. + * + * @todo Pending work on next major version change: +- * - Move SUP_IOCTL_FAST_DO_NOP and SUP_VMMR0_DO_NEM_RUN after NEM. ++ * - Nothing. ++ * @note 0x002f0000 is used by 6.0. The next version number must be 0x00300000. + */ +-#define SUPDRV_IOC_VERSION 0x002d0001 ++#define SUPDRV_IOC_VERSION 0x002e0000 + + /** SUP_IOCTL_COOKIE. */ + typedef struct SUPCOOKIE +@@ -314,8 +315,8 @@ typedef struct SUPLDROPEN + { + struct + { +- /** Size of the image we'll be loading (including tables). */ +- uint32_t cbImageWithTabs; ++ /** Size of the image we'll be loading (including all tables). */ ++ uint32_t cbImageWithEverything; + /** The size of the image bits. (Less or equal to cbImageWithTabs.) */ + uint32_t cbImageBits; + /** Image name. +@@ -390,6 +391,29 @@ typedef SUPLDRSYM *PSUPLDRSYM; + /** Pointer to a const symbol table entry. */ + typedef SUPLDRSYM const *PCSUPLDRSYM; + ++#define SUPLDR_PROT_READ 1 /**< Grant read access (RTMEM_PROT_READ). */ ++#define SUPLDR_PROT_WRITE 2 /**< Grant write access (RTMEM_PROT_WRITE). */ ++#define SUPLDR_PROT_EXEC 4 /**< Grant execute access (RTMEM_PROT_EXEC). */ ++ ++/** ++ * A segment table entry - chiefly for conveying memory protection. ++ */ ++typedef struct SUPLDRSEG ++{ ++ /** The RVA of the segment. */ ++ uint32_t off; ++ /** The size of the segment. */ ++ uint32_t cb : 28; ++ /** The segment protection (SUPLDR_PROT_XXX). */ ++ uint32_t fProt : 3; ++ /** MBZ. */ ++ uint32_t fUnused; ++} SUPLDRSEG; ++/** Pointer to a segment table entry. */ ++typedef SUPLDRSEG *PSUPLDRSEG; ++/** Pointer to a const segment table entry. */ ++typedef SUPLDRSEG const *PCSUPLDRSEG; ++ + /** + * SUPLDRLOAD::u::In::EP type. + */ +@@ -443,7 +467,7 @@ typedef struct SUPLDRLOAD + /** The size of the image bits (starting at offset 0 and + * approaching offSymbols). */ + uint32_t cbImageBits; +- /** The offset of the symbol table. */ ++ /** The offset of the symbol table (SUPLDRSYM array). */ + uint32_t offSymbols; + /** The number of entries in the symbol table. */ + uint32_t cSymbols; +@@ -451,8 +475,12 @@ typedef struct SUPLDRLOAD + uint32_t offStrTab; + /** Size of the string table. */ + uint32_t cbStrTab; ++ /** Offset to the segment table (SUPLDRSEG array). */ ++ uint32_t offSegments; ++ /** Number of segments. */ ++ uint32_t cSegments; + /** Size of image data in achImage. */ +- uint32_t cbImageWithTabs; ++ uint32_t cbImageWithEverything; + /** The image data. */ + uint8_t abImage[1]; + } In; +--- a/src/VBox/HostDrivers/Support/SUPDrvInternal.h ++++ b/src/VBox/HostDrivers/Support/SUPDrvInternal.h +@@ -145,6 +145,12 @@ + # define SUPDRV_USE_MUTEX_FOR_GIP + #endif + ++#if defined(RT_OS_LINUX) /** @todo make everyone do this */ ++/** Use the RTR0MemObj API rather than the RTMemExecAlloc for the images. ++ * This is a good idea in general, but a necessity for @bugref{9801}. */ ++# define SUPDRV_USE_MEMOBJ_FOR_LDR_IMAGE ++#endif ++ + + /** + * OS debug print macro. +@@ -326,15 +332,20 @@ typedef struct SUPDRVLDRIMAGE + struct SUPDRVLDRIMAGE * volatile pNext; + /** Pointer to the image. */ + void *pvImage; ++#ifdef SUPDRV_USE_MEMOBJ_FOR_LDR_IMAGE ++ /** The memory object for the module allocation. */ ++ RTR0MEMOBJ hMemObjImage; ++#else + /** Pointer to the allocated image buffer. + * pvImage is 32-byte aligned or it may governed by the native loader (this + * member is NULL then). */ + void *pvImageAlloc; ++#endif + /** Magic value (SUPDRVLDRIMAGE_MAGIC). */ + uint32_t uMagic; + /** Size of the image including the tables. This is mainly for verification + * of the load request. */ +- uint32_t cbImageWithTabs; ++ uint32_t cbImageWithEverything; + /** Size of the image. */ + uint32_t cbImageBits; + /** The number of entries in the symbol table. */ +@@ -345,6 +356,10 @@ typedef struct SUPDRVLDRIMAGE + char *pachStrTab; + /** Size of the string table. */ + uint32_t cbStrTab; ++ /** Number of segments. */ ++ uint32_t cSegments; ++ /** Segments (for memory protection). */ ++ PSUPLDRSEG paSegments; + /** Pointer to the optional module initialization callback. */ + PFNR0MODULEINIT pfnModuleInit; + /** Pointer to the optional module termination callback. */ +--- a/src/VBox/HostDrivers/Support/SUPDrv.cpp ++++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp +@@ -1734,11 +1734,10 @@ static int supdrvIOCtlInnerUnrestricted( + /* validate */ + PSUPLDROPEN pReq = (PSUPLDROPEN)pReqHdr; + REQ_CHECK_SIZES(SUP_IOCTL_LDR_OPEN); +- REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageWithTabs > 0); +- REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageWithTabs < 16*_1M); ++ REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageWithEverything > 0); ++ REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageWithEverything < 16*_1M); + REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits > 0); +- REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits > 0); +- REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits < pReq->u.In.cbImageWithTabs); ++ REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.cbImageBits < pReq->u.In.cbImageWithEverything); + REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, pReq->u.In.szName[0]); + REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, RTStrEnd(pReq->u.In.szName, sizeof(pReq->u.In.szName))); + REQ_CHECK_EXPR(SUP_IOCTL_LDR_OPEN, supdrvIsLdrModuleNameValid(pReq->u.In.szName)); +@@ -1754,19 +1753,29 @@ static int supdrvIOCtlInnerUnrestricted( + /* validate */ + PSUPLDRLOAD pReq = (PSUPLDRLOAD)pReqHdr; + REQ_CHECK_EXPR(Name, pReq->Hdr.cbIn >= SUP_IOCTL_LDR_LOAD_SIZE_IN(32)); +- REQ_CHECK_SIZES_EX(SUP_IOCTL_LDR_LOAD, SUP_IOCTL_LDR_LOAD_SIZE_IN(pReq->u.In.cbImageWithTabs), SUP_IOCTL_LDR_LOAD_SIZE_OUT); +- REQ_CHECK_EXPR(SUP_IOCTL_LDR_LOAD, pReq->u.In.cSymbols <= 16384); ++ REQ_CHECK_SIZES_EX(SUP_IOCTL_LDR_LOAD, SUP_IOCTL_LDR_LOAD_SIZE_IN(pReq->u.In.cbImageWithEverything), SUP_IOCTL_LDR_LOAD_SIZE_OUT); + REQ_CHECK_EXPR_FMT( !pReq->u.In.cSymbols +- || ( pReq->u.In.offSymbols < pReq->u.In.cbImageWithTabs +- && pReq->u.In.offSymbols + pReq->u.In.cSymbols * sizeof(SUPLDRSYM) <= pReq->u.In.cbImageWithTabs), +- ("SUP_IOCTL_LDR_LOAD: offSymbols=%#lx cSymbols=%#lx cbImageWithTabs=%#lx\n", (long)pReq->u.In.offSymbols, +- (long)pReq->u.In.cSymbols, (long)pReq->u.In.cbImageWithTabs)); ++ || ( pReq->u.In.cSymbols <= 16384 ++ && pReq->u.In.offSymbols >= pReq->u.In.cbImageBits ++ && pReq->u.In.offSymbols < pReq->u.In.cbImageWithEverything ++ && pReq->u.In.offSymbols + pReq->u.In.cSymbols * sizeof(SUPLDRSYM) <= pReq->u.In.cbImageWithEverything), ++ ("SUP_IOCTL_LDR_LOAD: offSymbols=%#lx cSymbols=%#lx cbImageWithEverything=%#lx\n", (long)pReq->u.In.offSymbols, ++ (long)pReq->u.In.cSymbols, (long)pReq->u.In.cbImageWithEverything)); + REQ_CHECK_EXPR_FMT( !pReq->u.In.cbStrTab +- || ( pReq->u.In.offStrTab < pReq->u.In.cbImageWithTabs +- && pReq->u.In.offStrTab + pReq->u.In.cbStrTab <= pReq->u.In.cbImageWithTabs +- && pReq->u.In.cbStrTab <= pReq->u.In.cbImageWithTabs), +- ("SUP_IOCTL_LDR_LOAD: offStrTab=%#lx cbStrTab=%#lx cbImageWithTabs=%#lx\n", (long)pReq->u.In.offStrTab, +- (long)pReq->u.In.cbStrTab, (long)pReq->u.In.cbImageWithTabs)); ++ || ( pReq->u.In.offStrTab < pReq->u.In.cbImageWithEverything ++ && pReq->u.In.offStrTab >= pReq->u.In.cbImageBits ++ && pReq->u.In.offStrTab + pReq->u.In.cbStrTab <= pReq->u.In.cbImageWithEverything ++ && pReq->u.In.cbStrTab <= pReq->u.In.cbImageWithEverything), ++ ("SUP_IOCTL_LDR_LOAD: offStrTab=%#lx cbStrTab=%#lx cbImageWithEverything=%#lx\n", (long)pReq->u.In.offStrTab, ++ (long)pReq->u.In.cbStrTab, (long)pReq->u.In.cbImageWithEverything)); ++ REQ_CHECK_EXPR_FMT( pReq->u.In.cSegments >= 1 ++ && pReq->u.In.cSegments <= 128 ++ && pReq->u.In.cSegments <= pReq->u.In.cbImageBits / PAGE_SIZE ++ && pReq->u.In.offSegments >= pReq->u.In.cbImageBits ++ && pReq->u.In.offSegments < pReq->u.In.cbImageWithEverything ++ && pReq->u.In.offSegments + pReq->u.In.cSegments * sizeof(SUPLDRSEG) <= pReq->u.In.cbImageWithEverything, ++ ("SUP_IOCTL_LDR_LOAD: offSegments=%#lx cSegments=%#lx cbImageWithEverything=%#lx\n", (long)pReq->u.In.offSegments, ++ (long)pReq->u.In.cSegments, (long)pReq->u.In.cbImageWithEverything)); + + if (pReq->u.In.cSymbols) + { +@@ -1774,15 +1783,37 @@ static int supdrvIOCtlInnerUnrestricted( + PSUPLDRSYM paSyms = (PSUPLDRSYM)&pReq->u.In.abImage[pReq->u.In.offSymbols]; + for (i = 0; i < pReq->u.In.cSymbols; i++) + { +- REQ_CHECK_EXPR_FMT(paSyms[i].offSymbol < pReq->u.In.cbImageWithTabs, +- ("SUP_IOCTL_LDR_LOAD: sym #%ld: symb off %#lx (max=%#lx)\n", (long)i, (long)paSyms[i].offSymbol, (long)pReq->u.In.cbImageWithTabs)); ++ REQ_CHECK_EXPR_FMT(paSyms[i].offSymbol < pReq->u.In.cbImageWithEverything, ++ ("SUP_IOCTL_LDR_LOAD: sym #%ld: symb off %#lx (max=%#lx)\n", (long)i, (long)paSyms[i].offSymbol, (long)pReq->u.In.cbImageWithEverything)); + REQ_CHECK_EXPR_FMT(paSyms[i].offName < pReq->u.In.cbStrTab, +- ("SUP_IOCTL_LDR_LOAD: sym #%ld: name off %#lx (max=%#lx)\n", (long)i, (long)paSyms[i].offName, (long)pReq->u.In.cbImageWithTabs)); ++ ("SUP_IOCTL_LDR_LOAD: sym #%ld: name off %#lx (max=%#lx)\n", (long)i, (long)paSyms[i].offName, (long)pReq->u.In.cbImageWithEverything)); + REQ_CHECK_EXPR_FMT(RTStrEnd((char const *)&pReq->u.In.abImage[pReq->u.In.offStrTab + paSyms[i].offName], + pReq->u.In.cbStrTab - paSyms[i].offName), +- ("SUP_IOCTL_LDR_LOAD: sym #%ld: unterminated name! (%#lx / %#lx)\n", (long)i, (long)paSyms[i].offName, (long)pReq->u.In.cbImageWithTabs)); ++ ("SUP_IOCTL_LDR_LOAD: sym #%ld: unterminated name! (%#lx / %#lx)\n", (long)i, (long)paSyms[i].offName, (long)pReq->u.In.cbImageWithEverything)); + } + } ++ { ++ uint32_t i; ++ uint32_t offPrevEnd = 0; ++ PSUPLDRSEG paSegs = (PSUPLDRSEG)&pReq->u.In.abImage[pReq->u.In.offSegments]; ++ for (i = 0; i < pReq->u.In.cSegments; i++) ++ { ++ REQ_CHECK_EXPR_FMT(paSegs[i].off < pReq->u.In.cbImageBits && !(paSegs[i].off & PAGE_OFFSET_MASK), ++ ("SUP_IOCTL_LDR_LOAD: seg #%ld: off %#lx (max=%#lx)\n", (long)i, (long)paSegs[i].off, (long)pReq->u.In.cbImageBits)); ++ REQ_CHECK_EXPR_FMT(paSegs[i].cb <= pReq->u.In.cbImageBits, ++ ("SUP_IOCTL_LDR_LOAD: seg #%ld: cb %#lx (max=%#lx)\n", (long)i, (long)paSegs[i].cb, (long)pReq->u.In.cbImageBits)); ++ REQ_CHECK_EXPR_FMT(paSegs[i].off + paSegs[i].cb <= pReq->u.In.cbImageBits, ++ ("SUP_IOCTL_LDR_LOAD: seg #%ld: off %#lx + cb %#lx = %#lx (max=%#lx)\n", (long)i, (long)paSegs[i].off, (long)paSegs[i].cb, (long)(paSegs[i].off + paSegs[i].cb), (long)pReq->u.In.cbImageBits)); ++ REQ_CHECK_EXPR_FMT(paSegs[i].fProt != 0, ++ ("SUP_IOCTL_LDR_LOAD: seg #%ld: off %#lx + cb %#lx\n", (long)i, (long)paSegs[i].off, (long)paSegs[i].cb)); ++ REQ_CHECK_EXPR_FMT(paSegs[i].fUnused == 0, ("SUP_IOCTL_LDR_LOAD: seg #%ld: fUnused=1\n", (long)i)); ++ REQ_CHECK_EXPR_FMT(offPrevEnd == paSegs[i].off, ++ ("SUP_IOCTL_LDR_LOAD: seg #%ld: off %#lx offPrevEnd %#lx\n", (long)i, (long)paSegs[i].off, (long)offPrevEnd)); ++ offPrevEnd = paSegs[i].off + paSegs[i].cb; ++ } ++ REQ_CHECK_EXPR_FMT(offPrevEnd == pReq->u.In.cbImageBits, ++ ("SUP_IOCTL_LDR_LOAD: offPrevEnd %#lx cbImageBits %#lx\n", (long)i, (long)offPrevEnd, (long)pReq->u.In.cbImageBits)); ++ } + + /* execute */ + pReq->Hdr.rc = supdrvIOCtl_LdrLoad(pDevExt, pSession, pReq); +@@ -5021,7 +5052,7 @@ static int supdrvIOCtl_LdrOpen(PSUPDRVDE + size_t cchName = strlen(pReq->u.In.szName); /* (caller checked < 32). */ + SUPDRV_CHECK_SMAP_SETUP(); + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); +- LogFlow(("supdrvIOCtl_LdrOpen: szName=%s cbImageWithTabs=%d\n", pReq->u.In.szName, pReq->u.In.cbImageWithTabs)); ++ LogFlow(("supdrvIOCtl_LdrOpen: szName=%s cbImageWithEverything=%d\n", pReq->u.In.szName, pReq->u.In.cbImageWithEverything)); + + /* + * Check if we got an instance of the image already. +@@ -5035,7 +5066,8 @@ static int supdrvIOCtl_LdrOpen(PSUPDRVDE + { + if (RT_LIKELY(pImage->cUsage < UINT32_MAX / 2U)) + { +- /** @todo check cbImageBits and cbImageWithTabs here, if they differs that indicates that the images are different. */ ++ /** @todo check cbImageBits and cbImageWithEverything here, if they differs ++ * that indicates that the images are different. */ + pImage->cUsage++; + pReq->u.Out.pvImageBase = pImage->pvImage; + pReq->u.Out.fNeedsLoading = pImage->uState == SUP_IOCTL_LDR_OPEN; +@@ -5078,13 +5110,19 @@ static int supdrvIOCtl_LdrOpen(PSUPDRVDE + */ + pImage = (PSUPDRVLDRIMAGE)pv; + pImage->pvImage = NULL; ++#ifdef SUPDRV_USE_MEMOBJ_FOR_LDR_IMAGE ++ pImage->hMemObjImage = NIL_RTR0MEMOBJ; ++#else + pImage->pvImageAlloc = NULL; +- pImage->cbImageWithTabs = pReq->u.In.cbImageWithTabs; ++#endif ++ pImage->cbImageWithEverything = pReq->u.In.cbImageWithEverything; + pImage->cbImageBits = pReq->u.In.cbImageBits; + pImage->cSymbols = 0; + pImage->paSymbols = NULL; + pImage->pachStrTab = NULL; + pImage->cbStrTab = 0; ++ pImage->cSegments = 0; ++ pImage->paSegments = NULL; + pImage->pfnModuleInit = NULL; + pImage->pfnModuleTerm = NULL; + pImage->pfnServiceReqHandler = NULL; +@@ -5102,10 +5140,19 @@ static int supdrvIOCtl_LdrOpen(PSUPDRVDE + rc = supdrvOSLdrOpen(pDevExt, pImage, pReq->u.In.szFilename); + if (rc == VERR_NOT_SUPPORTED) + { ++#ifdef SUPDRV_USE_MEMOBJ_FOR_LDR_IMAGE ++ rc = RTR0MemObjAllocPage(&pImage->hMemObjImage, pImage->cbImageBits, true /*fExecutable*/); ++ if (RT_SUCCESS(rc)) ++ { ++ pImage->pvImage = RTR0MemObjAddress(pImage->hMemObjImage); ++ pImage->fNative = false; ++ } ++#else + pImage->pvImageAlloc = RTMemExecAlloc(pImage->cbImageBits + 31); + pImage->pvImage = RT_ALIGN_P(pImage->pvImageAlloc, 32); + pImage->fNative = false; + rc = pImage->pvImageAlloc ? VINF_SUCCESS : VERR_NO_EXEC_MEMORY; ++#endif + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); + } + if (RT_FAILURE(rc)) +@@ -5138,41 +5185,90 @@ static int supdrvIOCtl_LdrOpen(PSUPDRVDE + + + /** ++ * Formats a load error message. ++ * ++ * @returns @a rc ++ * @param rc Return code. ++ * @param pReq The request. ++ * @param pszFormat The error message format string. ++ * @param ... Argument to the format string. ++ */ ++int VBOXCALL supdrvLdrLoadError(int rc, PSUPLDRLOAD pReq, const char *pszFormat, ...) ++{ ++ va_list va; ++ va_start(va, pszFormat); ++ pReq->u.Out.uErrorMagic = SUPLDRLOAD_ERROR_MAGIC; ++ RTStrPrintfV(pReq->u.Out.szError, sizeof(pReq->u.Out.szError), pszFormat, va); ++ va_end(va); ++ Log(("SUP_IOCTL_LDR_LOAD: %s [rc=%Rrc]\n", pReq->u.Out.szError, rc)); ++ return rc; ++} ++ ++ ++/** + * Worker that validates a pointer to an image entrypoint. + * ++ * Calls supdrvLdrLoadError on error. ++ * + * @returns IPRT status code. + * @param pDevExt The device globals. + * @param pImage The loader image. + * @param pv The pointer into the image. + * @param fMayBeNull Whether it may be NULL. +- * @param fCheckNative Whether to check with the native loaders. +- * @param pszSymbol The entrypoint name or log name. If the symbol ++ * @param pszSymbol The entrypoint name or log name. If the symbol is + * capitalized it signifies a specific symbol, otherwise it + * for logging. + * @param pbImageBits The image bits prepared by ring-3. ++ * @param pReq The request for passing to supdrvLdrLoadError. + * +- * @remarks Will leave the lock on failure. ++ * @note Will leave the loader lock on failure! + */ + static int supdrvLdrValidatePointer(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage, void *pv, bool fMayBeNull, +- bool fCheckNative, const uint8_t *pbImageBits, const char *pszSymbol) ++ const uint8_t *pbImageBits, const char *pszSymbol, PSUPLDRLOAD pReq) + { + if (!fMayBeNull || pv) + { +- if ((uintptr_t)pv - (uintptr_t)pImage->pvImage >= pImage->cbImageBits) ++ uint32_t iSeg; ++ ++ /* Must be within the image bits: */ ++ uintptr_t const uRva = (uintptr_t)pv - (uintptr_t)pImage->pvImage; ++ if (uRva >= pImage->cbImageBits) + { + supdrvLdrUnlock(pDevExt); +- Log(("Out of range (%p LB %#x): %s=%p\n", pImage->pvImage, pImage->cbImageBits, pszSymbol, pv)); +- return VERR_INVALID_PARAMETER; ++ return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, ++ "Invalid entry point address %p given for %s: RVA %#zx, image size %#zx", ++ pv, pszSymbol, uRva, pImage->cbImageBits); + } + +- if (pImage->fNative && fCheckNative) ++ /* Must be in an executable segment: */ ++ for (iSeg = 0; iSeg < pImage->cSegments; iSeg++) ++ if (uRva - pImage->paSegments[iSeg].off < (uintptr_t)pImage->paSegments[iSeg].cb) ++ { ++ if (pImage->paSegments[iSeg].fProt & SUPLDR_PROT_EXEC) ++ break; ++ supdrvLdrUnlock(pDevExt); ++ return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, ++ "Bad entry point %p given for %s: not executable (seg #%u: %#RX32 LB %#RX32 prot %#x)", ++ pv, pszSymbol, iSeg, pImage->paSegments[iSeg].off, pImage->paSegments[iSeg].cb, ++ pImage->paSegments[iSeg].fProt); ++ } ++ if (iSeg >= pImage->cSegments) + { ++ supdrvLdrUnlock(pDevExt); ++ return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, ++ "Bad entry point %p given for %s: no matching segment found (RVA %#zx)!", ++ pv, pszSymbol, uRva); ++ } ++ ++ if (pImage->fNative) ++ { ++ /** @todo pass pReq along to the native code. */ + int rc = supdrvOSLdrValidatePointer(pDevExt, pImage, pv, pbImageBits, pszSymbol); + if (RT_FAILURE(rc)) + { + supdrvLdrUnlock(pDevExt); +- Log(("Bad entry point address: %s=%p (rc=%Rrc)\n", pszSymbol, pv, rc)); +- return rc; ++ return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, ++ "Bad entry point address %p for %s: rc=%Rrc\n", pv, pszSymbol, rc); + } + } + } +@@ -5223,27 +5319,6 @@ int VBOXCALL supdrvLdrLoadError(int rc, + + + /** +- * Formats a load error message. +- * +- * @returns @a rc +- * @param rc Return code. +- * @param pReq The request. +- * @param pszFormat The error message format string. +- * @param ... Argument to the format string. +- */ +-int VBOXCALL supdrvLdrLoadError(int rc, PSUPLDRLOAD pReq, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- pReq->u.Out.uErrorMagic = SUPLDRLOAD_ERROR_MAGIC; +- RTStrPrintfV(pReq->u.Out.szError, sizeof(pReq->u.Out.szError), pszFormat, va); +- va_end(va); +- Log(("SUP_IOCTL_LDR_LOAD: %s [rc=%Rrc]\n", pReq->u.Out.szError, rc)); +- return rc; +-} +- +- +-/** + * Loads the image bits. + * + * This is the 2nd step of the loading. +@@ -5259,7 +5334,7 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + PSUPDRVLDRIMAGE pImage; + int rc; + SUPDRV_CHECK_SMAP_SETUP(); +- LogFlow(("supdrvIOCtl_LdrLoad: pvImageBase=%p cbImageWithBits=%d\n", pReq->u.In.pvImageBase, pReq->u.In.cbImageWithTabs)); ++ LogFlow(("supdrvIOCtl_LdrLoad: pvImageBase=%p cbImageWithEverything=%d\n", pReq->u.In.pvImageBase, pReq->u.In.cbImageWithEverything)); + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); + + /* +@@ -5281,12 +5356,12 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + /* + * Validate input. + */ +- if ( pImage->cbImageWithTabs != pReq->u.In.cbImageWithTabs +- || pImage->cbImageBits != pReq->u.In.cbImageBits) ++ if ( pImage->cbImageWithEverything != pReq->u.In.cbImageWithEverything ++ || pImage->cbImageBits != pReq->u.In.cbImageBits) + { + supdrvLdrUnlock(pDevExt); +- return supdrvLdrLoadError(VERR_INVALID_HANDLE, pReq, "Image size mismatch found: %d(prep) != %d(load) or %d != %d", +- pImage->cbImageWithTabs, pReq->u.In.cbImageWithTabs, pImage->cbImageBits, pReq->u.In.cbImageBits); ++ return supdrvLdrLoadError(VERR_INVALID_HANDLE, pReq, "Image size mismatch found: %u(prep) != %u(load) or %u != %u", ++ pImage->cbImageWithEverything, pReq->u.In.cbImageWithEverything, pImage->cbImageBits, pReq->u.In.cbImageBits); + } + + if (pImage->uState != SUP_IOCTL_LDR_OPEN) +@@ -5306,35 +5381,56 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + return supdrvLdrLoadError(VERR_PERMISSION_DENIED, pReq, "Loader is locked down"); + } + ++ /* ++ * Copy the segments before we start using supdrvLdrValidatePointer for entrypoint validation. ++ */ ++ pImage->cSegments = pReq->u.In.cSegments; ++ { ++ size_t cbSegments = pImage->cSegments * sizeof(SUPLDRSEG); ++ pImage->paSegments = (PSUPLDRSEG)RTMemDup(&pReq->u.In.abImage[pReq->u.In.offSegments], cbSegments); ++ if (pImage->paSegments) /* Align the last segment size to avoid upsetting RTR0MemObjProtect. */ /** @todo relax RTR0MemObjProtect */ ++ pImage->paSegments[pImage->cSegments - 1].cb = RT_ALIGN_32(pImage->paSegments[pImage->cSegments - 1].cb, PAGE_SIZE); ++ else ++ { ++ supdrvLdrUnlock(pDevExt); ++ return supdrvLdrLoadError(VERR_NO_MEMORY, pReq, "Out of memory for segment table: %#x", cbSegments); ++ } ++ SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); ++ } ++ ++ /* ++ * Validate entrypoints. ++ */ + switch (pReq->u.In.eEPType) + { + case SUPLDRLOADEP_NOTHING: + break; + + case SUPLDRLOADEP_VMMR0: +- rc = supdrvLdrValidatePointer( pDevExt, pImage, pReq->u.In.EP.VMMR0.pvVMMR0, false, false, pReq->u.In.abImage, "pvVMMR0"); +- if (RT_SUCCESS(rc)) +- rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.EP.VMMR0.pvVMMR0EntryFast, false, true, pReq->u.In.abImage, "VMMR0EntryFast"); +- if (RT_SUCCESS(rc)) +- rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.EP.VMMR0.pvVMMR0EntryEx, false, true, pReq->u.In.abImage, "VMMR0EntryEx"); ++ if (pReq->u.In.EP.VMMR0.pvVMMR0 != pImage->pvImage) ++ { ++ supdrvLdrUnlock(pDevExt); ++ return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, "Invalid pvVMMR0 pointer: %p, expected %p", pReq->u.In.EP.VMMR0.pvVMMR0, pImage->pvImage); ++ } ++ rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.EP.VMMR0.pvVMMR0EntryFast, false, pReq->u.In.abImage, "VMMR0EntryFast", pReq); ++ if (RT_FAILURE(rc)) ++ return rc; ++ rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.EP.VMMR0.pvVMMR0EntryEx, false, pReq->u.In.abImage, "VMMR0EntryEx", pReq); + if (RT_FAILURE(rc)) +- return supdrvLdrLoadError(rc, pReq, "Invalid VMMR0 pointer"); ++ return rc; + break; + + case SUPLDRLOADEP_SERVICE: +- rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.EP.Service.pfnServiceReq, false, true, pReq->u.In.abImage, "pfnServiceReq"); ++ rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.EP.Service.pfnServiceReq, false, pReq->u.In.abImage, "pfnServiceReq", pReq); + if (RT_FAILURE(rc)) +- return supdrvLdrLoadError(rc, pReq, "Invalid pfnServiceReq pointer: %p", pReq->u.In.EP.Service.pfnServiceReq); ++ return rc; + if ( pReq->u.In.EP.Service.apvReserved[0] != NIL_RTR0PTR + || pReq->u.In.EP.Service.apvReserved[1] != NIL_RTR0PTR + || pReq->u.In.EP.Service.apvReserved[2] != NIL_RTR0PTR) + { + supdrvLdrUnlock(pDevExt); +- return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, +- "Out of range (%p LB %#x): apvReserved={%p,%p,%p} MBZ!", +- pImage->pvImage, pReq->u.In.cbImageWithTabs, +- pReq->u.In.EP.Service.apvReserved[0], +- pReq->u.In.EP.Service.apvReserved[1], ++ return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, "apvReserved={%p,%p,%p} MBZ!", ++ pReq->u.In.EP.Service.apvReserved[0], pReq->u.In.EP.Service.apvReserved[1], + pReq->u.In.EP.Service.apvReserved[2]); + } + break; +@@ -5344,12 +5440,12 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + return supdrvLdrLoadError(VERR_INVALID_PARAMETER, pReq, "Invalid eEPType=%d", pReq->u.In.eEPType); + } + +- rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.pfnModuleInit, true, true, pReq->u.In.abImage, "ModuleInit"); ++ rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.pfnModuleInit, true, pReq->u.In.abImage, "ModuleInit", pReq); + if (RT_FAILURE(rc)) +- return supdrvLdrLoadError(rc, pReq, "Invalid pfnModuleInit pointer: %p", pReq->u.In.pfnModuleInit); +- rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.pfnModuleTerm, true, true, pReq->u.In.abImage, "ModuleTerm"); ++ return rc; ++ rc = supdrvLdrValidatePointer(pDevExt, pImage, pReq->u.In.pfnModuleTerm, true, pReq->u.In.abImage, "ModuleTerm", pReq); + if (RT_FAILURE(rc)) +- return supdrvLdrLoadError(rc, pReq, "Invalid pfnModuleTerm pointer: %p", pReq->u.In.pfnModuleTerm); ++ return rc; + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); + + /* +@@ -5361,10 +5457,8 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + pImage->cbStrTab = pReq->u.In.cbStrTab; + if (pImage->cbStrTab) + { +- pImage->pachStrTab = (char *)RTMemAlloc(pImage->cbStrTab); +- if (pImage->pachStrTab) +- memcpy(pImage->pachStrTab, &pReq->u.In.abImage[pReq->u.In.offStrTab], pImage->cbStrTab); +- else ++ pImage->pachStrTab = (char *)RTMemDup(&pReq->u.In.abImage[pReq->u.In.offStrTab], pImage->cbStrTab); ++ if (!pImage->pachStrTab) + rc = supdrvLdrLoadError(VERR_NO_MEMORY, pReq, "Out of memory for string table: %#x", pImage->cbStrTab); + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); + } +@@ -5373,17 +5467,15 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + if (RT_SUCCESS(rc) && pImage->cSymbols) + { + size_t cbSymbols = pImage->cSymbols * sizeof(SUPLDRSYM); +- pImage->paSymbols = (PSUPLDRSYM)RTMemAlloc(cbSymbols); +- if (pImage->paSymbols) +- memcpy(pImage->paSymbols, &pReq->u.In.abImage[pReq->u.In.offSymbols], cbSymbols); +- else ++ pImage->paSymbols = (PSUPLDRSYM)RTMemDup(&pReq->u.In.abImage[pReq->u.In.offSymbols], cbSymbols); ++ if (!pImage->paSymbols) + rc = supdrvLdrLoadError(VERR_NO_MEMORY, pReq, "Out of memory for symbol table: %#x", cbSymbols); + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); + } + } + + /* +- * Copy the bits / complete native loading. ++ * Copy the bits and apply permissions / complete native loading. + */ + if (RT_SUCCESS(rc)) + { +@@ -5395,7 +5487,26 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDE + rc = supdrvOSLdrLoad(pDevExt, pImage, pReq->u.In.abImage, pReq); + else + { ++#ifdef SUPDRV_USE_MEMOBJ_FOR_LDR_IMAGE ++ uint32_t i; + memcpy(pImage->pvImage, &pReq->u.In.abImage[0], pImage->cbImageBits); ++ ++ for (i = 0; i < pImage->cSegments; i++) ++ { ++ rc = RTR0MemObjProtect(pImage->hMemObjImage, pImage->paSegments[i].off, pImage->paSegments[i].cb, ++ pImage->paSegments[i].fProt); ++ if (RT_SUCCESS(rc)) ++ continue; ++ if (rc == VERR_NOT_SUPPORTED) ++ rc = VINF_SUCCESS; ++ else ++ rc = supdrvLdrLoadError(rc, pReq, "RTR0MemObjProtect failed on seg#%u %#RX32 LB %#RX32 fProt=%#x", ++ i, pImage->paSegments[i].off, pImage->paSegments[i].cb, pImage->paSegments[i].fProt); ++ break; ++ } ++#else ++ memcpy(pImage->pvImage, &pReq->u.In.abImage[0], pImage->cbImageBits); ++#endif + Log(("vboxdrv: Loaded '%s' at %p\n", pImage->szName, pImage->pvImage)); + } + SUPDRV_CHECK_SMAP_CHECK(pDevExt, RT_NOTHING); +@@ -5990,12 +6101,20 @@ static void supdrvLdrFree(PSUPDRVDEVEXT + pImage->pDevExt = NULL; + pImage->pNext = NULL; + pImage->uState = SUP_IOCTL_LDR_FREE; ++#ifdef SUPDRV_USE_MEMOBJ_FOR_LDR_IMAGE ++ RTR0MemObjFree(pImage->hMemObjImage, true /*fMappings*/); ++ pImage->hMemObjImage = NIL_RTR0MEMOBJ; ++#else + RTMemExecFree(pImage->pvImageAlloc, pImage->cbImageBits + 31); + pImage->pvImageAlloc = NULL; ++#endif ++ pImage->pvImage = NULL; + RTMemFree(pImage->pachStrTab); + pImage->pachStrTab = NULL; + RTMemFree(pImage->paSymbols); + pImage->paSymbols = NULL; ++ RTMemFree(pImage->paSegments); ++ pImage->paSegments = NULL; + RTMemFree(pImage); + } + +--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h ++++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h +@@ -176,6 +176,11 @@ + # include <asm/set_memory.h> + #endif + ++/* for __flush_tlb_all() */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) ++# include <asm/tlbflush.h> ++#endif ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0) + # include <asm/smap.h> + #else diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-5.8-4.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-5.8-4.patch deleted file mode 100644 index cb4148fc7..000000000 --- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-5.8-4.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: Fix kernel 5.8 forbidding use of vermagic.h header file -Author: Gianfranco Costamagna <locutusofborg@debian.org> -Origin: https://www.virtualbox.org/ticket/19644 -Bug-Ubuntu: https://launchpad.net/bugs/1884652 -Last-Update: 2020-08-10 - ---- virtualbox-6.1.12-dfsg.orig/src/VBox/Additions/linux/sharedfolders/vfsmod.c -+++ virtualbox-6.1.12-dfsg/src/VBox/Additions/linux/sharedfolders/vfsmod.c -@@ -53,7 +53,9 @@ - #include <linux/seq_file.h> - #include <linux/vfs.h> - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 62) --# include <linux/vermagic.h> -+# if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) -+# include <linux/vermagic.h> -+# endif - #endif - #include <VBox/err.h> - #include <iprt/path.h> diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.12.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.12.bb index e57df58d6..6c036d403 100644 --- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.12.bb +++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.12.bb @@ -12,10 +12,7 @@ COMPATIBLE_MACHINE = "(qemux86|qemux86-64)" VBOX_NAME = "VirtualBox-${PV}" SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \ - file://0001-fixes_for_mm_struct.patch \ - file://0002-fixes_for_module_memory.patch \ - file://0003-fixes_for_changes_in_cpu_tlbstate.patch \ - file://kernel-5.8-4.patch \ + file://021-linux-5-8.patch \ file://Makefile.utils \ " SRC_URI[md5sum] = "3c351f7fd6376e0bb3c8489505a9450c" diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb index 20c7b2d37..93b0d6a67 100644 --- a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb +++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb @@ -32,7 +32,7 @@ inherit autotools-brokensep ptest pkgconfig PACKAGECONFIG ??= "gnutls libgcrypt nss openssl des" PACKAGECONFIG[gnutls] = ",,gnutls" PACKAGECONFIG[libgcrypt] = ",,libgcrypt" -PACKAGECONFIG[nss] = "--with-nss=${STAGING_DIR_HOST} --with-nspr=${STAGING_DIR_HOST},,nss nspr" +PACKAGECONFIG[nss] = "--with-nss=${STAGING_DIR_HOST} --with-nspr=${STAGING_DIR_HOST},--with-nss=no --with-nspr=no,nss nspr" PACKAGECONFIG[openssl] = ",,openssl" PACKAGECONFIG[des] = ",--disable-des,," diff --git a/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.5.1.bb b/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.5.1.bb new file mode 100644 index 000000000..34dd8c868 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.5.1.bb @@ -0,0 +1,19 @@ +SUMMARY = "Linux firmware validation framework" +DESCRIPTION = "Cukinia is designed to help Linux-based embedded firmware \ +developers run simple system-level validation tests on their firmware." +HOMEPAGE = "https://github.com/savoirfairelinux/cukinia" +LICENSE = "GPLv3 & Apache-2.0" + +LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" + +SRC_URI = "git://github.com/savoirfairelinux/cukinia.git;protocol=https;branch=master" + +SRCREV = "ea934c5393ad99c37bec3c621a364122720cce02" + +S = "${WORKDIR}/git" + +do_install () { + install -d ${D}${sbindir} + install -m 0755 ${S}/cukinia ${D}${sbindir} +} diff --git a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-image.bb b/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-image.bb index c10d20a64..b8d3a76e6 100644 --- a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-image.bb +++ b/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-image.bb @@ -2,4 +2,4 @@ require meta-perl-base.bb SUMMARY = "meta-perl build test image" -IMAGE_INSTALL += "packagegroup-meta-perl" +IMAGE_INSTALL += "packagegroup-meta-perl packagegroup-meta-perl-extended" diff --git a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb b/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb index 3b776f814..a9b4cc3c7 100644 --- a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb +++ b/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb @@ -2,4 +2,8 @@ require meta-perl-base.bb SUMMARY = "meta-perl build ptest image" +inherit features_check + +REQUIRED_DISTRO_FEATURES += "ptest" + IMAGE_INSTALL += "packagegroup-meta-perl-ptest" diff --git a/meta-openembedded/meta-perl/recipes-perl/libdata/libdata-hexdump-perl_0.02.bb b/meta-openembedded/meta-perl/recipes-perl/libdata/libdata-hexdump-perl_0.02.bb index 6ab5a4204..44c651c4c 100644 --- a/meta-openembedded/meta-perl/recipes-perl/libdata/libdata-hexdump-perl_0.02.bb +++ b/meta-openembedded/meta-perl/recipes-perl/libdata/libdata-hexdump-perl_0.02.bb @@ -23,7 +23,7 @@ SRC_URI[sha256sum] = "1a9d843e7f667c1c6f77c67af5d77e7462ff23b41937cb17454d03535c S = "${WORKDIR}/Data-HexDump-${PV}" -inherit cpan ptest +inherit cpan ptest update-alternatives do_install_ptest () { install -d ${D}${PTEST_PATH}/t @@ -31,3 +31,8 @@ do_install_ptest () { } BBCLASSEXTEND = "native" + +ALTERNATIVES_PRIORITY = "100" +ALTERNATIVE_${PN} = "hexdump" +ALTERNATIVE_LINK_NAME[hexdump] = "${bindir}/hexdump" + diff --git a/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.64.bb b/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.66.bb index 468add972..aef1d348c 100644 --- a/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.64.bb +++ b/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.66.bb @@ -14,8 +14,8 @@ SRC_URI = "${CPAN_MIRROR}/authors/id/I/IS/ISHIGAKI/DBD-SQLite-${PV}.tar.gz \ file://sqlite-perl-test.pl \ " -SRC_URI[md5sum] = "10796495b52927eb2e1df34c86924027" -SRC_URI[sha256sum] = "f4ae8f7b50842305566aadd90f7bfd12a9e32b6c603a9b1c1529e73eb82aff01" +SRC_URI[md5sum] = "38581209de5c981f0e79840c8937fa16" +SRC_URI[sha256sum] = "89e75dff9f66c273e0e459d51f151f88960eb7d82e2821e6902f18688ba592fe" UPSTREAM_CHECK_REGEX = "DBD\-SQLite\-(?P<pver>(\d+\.\d+))(?!_\d+).tar" diff --git a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.06.bb b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.07.bb index 24bde2163..4b0c1d873 100644 --- a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.06.bb +++ b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.07.bb @@ -15,8 +15,8 @@ LICENSE = "Artistic-1.0 | GPL-1.0+" LIC_FILES_CHKSUM = "file://META.json;beginline=8;endline=10;md5=b12e3be1e17a7e99ca4f429ff32c28b5" SRC_URI = "${CPAN_MIRROR}/authors/id/D/DA/DANKOGAI/Encode-${PV}.tar.gz" -SRC_URI[md5sum] = "d2e51a37b4e1d5b16816604f02363637" -SRC_URI[sha256sum] = "5b2dcd6861287880584e63b2e518840d483aa38da70194cf64d9957282851eea" +SRC_URI[md5sum] = "a63fa96cbe236b2f7bb5a5e9fd740837" +SRC_URI[sha256sum] = "34a4ec9b574b7a6c6132c4ab3ded490fd600bc7ce382124aeda58bb1e112910f" UPSTREAM_CHECK_REGEX = "Encode\-(?P<pver>(\d+\.\d+))(?!_\d+).tar" diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.25.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.26.bb index bda6ec1eb..3b960778c 100644 --- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.25.bb +++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.26.bb @@ -9,8 +9,8 @@ DEPENDS += "perl" SRC_URI = "http://search.cpan.org/CPAN/authors/id/N/NL/NLNETLABS/Net-DNS-${PV}.tar.gz" -SRC_URI[md5sum] = "5c0d1a6de317993e146ce6d37c897be5" -SRC_URI[sha256sum] = "10931927d32d771817f9cd7d5502794f245a86cb403310db33656e493f67ff25" +SRC_URI[md5sum] = "6db2562b6c42619e9c7d7e62422af8c4" +SRC_URI[sha256sum] = "eabaecd0fdb3e6adef8c9e016e8509319f19caa8c76836253f7db72bafe56498" UPSTREAM_CHECK_REGEX = "Net\-DNS\-(?P<pver>(\d+\.\d+))(?!_\d+).tar" diff --git a/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb b/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb index 9b2406ba6..3fa56d439 100644 --- a/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb +++ b/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb @@ -3,40 +3,87 @@ SUMMARY = "Meta-perl packagegroup" inherit packagegroup PROVIDES = "${PACKAGES}" -PACKAGES = ' \ +PACKAGES = "\ packagegroup-meta-perl \ packagegroup-meta-perl-extended \ -' + ${@bb.utils.contains("DISTRO_FEATURES", "ptest", "packagegroup-meta-perl-ptest-packages", "", d)} \ +" RDEPENDS_packagegroup-meta-perl = "\ - libproc-waitstat-perl libmoo-perl libterm-readkey-perl \ - libunicode-linebreak-perl libcurses-perl libmime-types-perl \ - libmime-charset-perl libio-socket-ssl-perl libio-stringy-perl \ - libtext-iconv-perl libtext-charwidth-perl libtext-diff-perl \ - libtext-wrapi18n-perl liblocale-gettext-perl libdata-hexdump-perl \ - libextutils-installpaths-perl libextutils-helpers-perl libextutils-parsexs-perl \ - libextutils-config-perl libextutils-cppguess-perl libimport-into-perl \ - libcrypt-openssl-rsa-perl libcrypt-openssl-guess-perl libcrypt-openssl-random-perl \ - libxml-sax-writer-perl libxml-libxml-perl libxml-filter-buffertext-perl \ adduser \ - libauthen-sasl-perl libnet-ldap-perl libnet-dns-perl \ - libnet-dns-sec-perl libnet-libidn-perl libnet-ssleay-perl \ - libnet-telnet-perl libdevel-globaldestruction-perl libipc-signal-perl \ - librole-tiny-perl libencode-perl libencode-locale-perl \ - libfile-slurp-perl libcapture-tiny-perl \ + libalgorithm-diff-perl \ + libauthen-sasl-perl \ + libauthen-radius-perl \ + libcapture-tiny-perl \ + libcgi-perl \ + libdbd-sqlite-perl \ + libclass-method-modifiers-perl \ + libdigest-hmac-perl \ + libdigest-sha1-perl \ + libconfig-autoconf-perl \ + libcrypt-openssl-guess-perl \ + libcrypt-openssl-random-perl \ + libcrypt-openssl-rsa-perl \ + libhtml-parser-perl \ + libhtml-tree-perl \ + libhtml-tagset-perl \ + libimport-into-perl \ + libio-socket-ssl-perl \ + libio-stringy-perl \ + libipc-signal-perl \ + libcurses-perl \ + libmime-charset-perl \ + libmime-types-perl \ + libmodule-pluggable-perl \ + libmodule-runtime-perl \ + libmodule-build-tiny-perl \ + libdata-hexdump-perl \ + libnet-dns-perl \ + libnet-libidn-perl \ + libnet-dns-sec-perl \ + libnet-ldap-perl \ + libnet-ssleay-perl \ + libnet-telnet-perl \ + libproc-waitstat-perl \ + libdevel-globaldestruction-perl \ + libenv-perl \ + libfile-slurp-perl \ + libfile-slurper-perl \ + libtext-iconv-perl \ + libtext-diff-perl \ + libtext-charwidth-perl \ + libtext-wrapi18n-perl \ + libxml-libxml-perl \ + libxml-filter-buffertext-perl \ + libxml-sax-writer-perl \ + libextutils-config-perl \ + libextutils-cppguess-perl \ + libextutils-helpers-perl \ + libextutils-installpaths-perl \ + libextutils-parsexs-perl \ + liblocale-gettext-perl \ + libmoo-perl \ + librole-tiny-perl \ + libunix-statgrab \ + libstrictures-perl \ + libsub-exporter-progressive-perl \ + libsub-uplevel-perl \ + libterm-readkey-perl \ + libtest-deep-perl \ + libtest-harness-perl \ + libtest-nowarnings-perl \ + libtest-warn-perl \ + libtest-warnings-perl \ + libunicode-linebreak-perl \ po4a \ - libstrictures-perl libtest-harness-perl libsub-exporter-progressive-perl \ - libclass-method-modifiers-perl libhtml-parser-perl libhtml-tree-perl \ - libmodule-pluggable-perl libmodule-build-perl libmodule-runtime-perl \ - libmodule-build-tiny-perl libcgi-perl libalgorithm-diff-perl \ - libdbd-sqlite-perl libdigest-sha1-perl libdigest-hmac-perl \ - " +" RDEPENDS_packagegroup-meta-perl-extended = "\ - logcheck mime-construct \ - " + logcheck \ + mime-construct \ +" -RDEPENDS_packagegroup-meta-perl-ptest = "\ +RDEPENDS_packagegroup-meta-perl-ptest-packages = "\ libmime-types-perl-ptest \ libio-socket-ssl-perl-ptest \ libdata-hexdump-perl-ptest \ @@ -47,6 +94,9 @@ RDEPENDS_packagegroup-meta-perl-ptest = "\ libtest-harness-perl-ptest \ libdigest-sha1-perl-ptest \ libdigest-hmac-perl-ptest \ - " +" EXCLUDE_FROM_WORLD = "1" + +# perl-module-encode is preferred over libencode-perl +# libencode-locale-perl depends on libencode-perl diff --git a/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb b/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb index 5db5b8f8b..1b3aca561 100644 --- a/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb +++ b/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb @@ -6,7 +6,7 @@ HOMEPAGE = "https://po4a.alioth.debian.org" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=a96fc9b4cc36d80659e694ea109f0325" -SRC_URI = "git://alioth.debian.org/anonscm/git/po4a/po4a.git;protocol=https" +SRC_URI = "git://github.com/mquinson/po4a.git;protocol=https" # v0.49 SRCREV = "79ed87a577a543538fe39c7b60079981f5997072" diff --git a/meta-openembedded/meta-python/licenses/WTFPL b/meta-openembedded/meta-python/licenses/WTFPL new file mode 100644 index 000000000..5a8e33254 --- /dev/null +++ b/meta-openembedded/meta-python/licenses/WTFPL @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc deleted file mode 100644 index 11971dc4a..000000000 --- a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python-gsocketpool.inc +++ /dev/null @@ -1,12 +0,0 @@ -SUMMARY = "A simple connection pool for gevent" -DESCRIPTION = "creates a pool of connections that can be used with gevent" -HOMEPAGE = "https://github.com/studio-ousia/gsocketpool" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=4ba825394aec026b5f94edca44426859" -DEPENDS += "${PYTHON_PN}-gevent" -RDEPENDS_${PN} += "${PYTHON_PN}-gevent" - -SRC_URI[md5sum] = "49f5f292ef1b60944ae92ca426a5e550" -SRC_URI[sha256sum] = "f2e2749aceadce6b27ca52e2b0a64af99797746a8681e1a2963f72007c14cb14" - -inherit pypi diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb index 883621e21..d3e7d48da 100644 --- a/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb +++ b/meta-openembedded/meta-python/recipes-connectivity/python-gsocketpool/python3-gsocketpool_0.1.6.bb @@ -1,2 +1,12 @@ -require python-gsocketpool.inc -inherit setuptools3 +SUMMARY = "A simple connection pool for gevent" +DESCRIPTION = "creates a pool of connections that can be used with gevent" +HOMEPAGE = "https://github.com/studio-ousia/gsocketpool" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4ba825394aec026b5f94edca44426859" +DEPENDS += "${PYTHON_PN}-gevent" +RDEPENDS_${PN} += "${PYTHON_PN}-gevent" + +SRC_URI[md5sum] = "49f5f292ef1b60944ae92ca426a5e550" +SRC_URI[sha256sum] = "f2e2749aceadce6b27ca52e2b0a64af99797746a8681e1a2963f72007c14cb14" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python3-hpack_3.0.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python3-hpack_3.0.0.bb deleted file mode 100644 index e196c55b3..000000000 --- a/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python3-hpack_3.0.0.bb +++ /dev/null @@ -1,3 +0,0 @@ -require python-hpack.inc - -inherit setuptools3 diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python-hpack.inc b/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python3-hpack_4.0.0.bb index eccfa8c56..afba98e4b 100644 --- a/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python-hpack.inc +++ b/meta-openembedded/meta-python/recipes-connectivity/python-hpack/python3-hpack_4.0.0.bb @@ -4,7 +4,7 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=5bf1c68e73fbaec2b1687b7e71514393" -SRC_URI[md5sum] = "556b0ae66180f54c2ce8029a0952088b" -SRC_URI[sha256sum] = "8eec9c1f4bfae3408a3f30500261f7e6a65912dc138526ea054f9ad98892e9d2" +SRC_URI[md5sum] = "27e01514ef06dc9fa0798d3dcb7de47c" +SRC_URI[sha256sum] = "fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095" -inherit pypi +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python3-hyperframe_5.2.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python3-hyperframe_5.2.0.bb deleted file mode 100644 index f10fb6df1..000000000 --- a/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python3-hyperframe_5.2.0.bb +++ /dev/null @@ -1,3 +0,0 @@ -require python-hyperframe.inc - -inherit setuptools3 diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python-hyperframe.inc b/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python3-hyperframe_6.0.0.bb index 0066bf8e6..4a936b49a 100644 --- a/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python-hyperframe.inc +++ b/meta-openembedded/meta-python/recipes-connectivity/python-hyperframe/python3-hyperframe_6.0.0.bb @@ -4,7 +4,7 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=5bf1c68e73fbaec2b1687b7e71514393" -SRC_URI[md5sum] = "6919183242feb26d8bce3b4cba81defd" -SRC_URI[sha256sum] = "a9f5c17f2cc3c719b917c4f33ed1c61bd1f8dfac4b1bd23b7c80b3400971b41f" +SRC_URI[md5sum] = "30136a712e092b1a45ae3cad3ae93131" +SRC_URI[sha256sum] = "742d2a4bc3152a340a49d59f32e33ec420aa8e7054c1444ef5c7efff255842f1" -inherit pypi +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc deleted file mode 100644 index e9eebe84a..000000000 --- a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python-mprpc.inc +++ /dev/null @@ -1,13 +0,0 @@ -SUMMARY = "A gevent based messagpack rpc library" -DESCRIPTION = "mprpc is a fast implementation of the messagepack rpc protocol for python. \ -It is based on gevent for handling connections and enabling concurrent connections." -HOMEPAGE = "https://github.com/studio-ousia/mprpc" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=4ba825394aec026b5f94edca44426859" -DEPENDS += "${PYTHON_PN}-gevent" -RDEPENDS_${PN} += "${PYTHON_PN}-gevent ${PYTHON_PN}-msgpack ${PYTHON_PN}-gsocketpool" - -SRC_URI[md5sum] = "8d97961051422f3de315613434982d3b" -SRC_URI[sha256sum] = "3589fd127482e291b1ec314d6f0e55cc13311c12932ace356d6178ea1ca28f6a" - -inherit pypi diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.17.bb b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.17.bb index 837d604ed..14eef9691 100644 --- a/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.17.bb +++ b/meta-openembedded/meta-python/recipes-connectivity/python-mprpc/python3-mprpc_0.1.17.bb @@ -1,2 +1,13 @@ -require python-mprpc.inc -inherit setuptools3 +SUMMARY = "A gevent based messagpack rpc library" +DESCRIPTION = "mprpc is a fast implementation of the messagepack rpc protocol for python. \ +It is based on gevent for handling connections and enabling concurrent connections." +HOMEPAGE = "https://github.com/studio-ousia/mprpc" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4ba825394aec026b5f94edca44426859" +DEPENDS += "${PYTHON_PN}-gevent" +RDEPENDS_${PN} += "${PYTHON_PN}-gevent ${PYTHON_PN}-msgpack ${PYTHON_PN}-gsocketpool" + +SRC_URI[md5sum] = "8d97961051422f3de315613434982d3b" +SRC_URI[sha256sum] = "3589fd127482e291b1ec314d6f0e55cc13311c12932ace356d6178ea1ca28f6a" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-priority/python-priority.inc b/meta-openembedded/meta-python/recipes-connectivity/python-priority/python-priority.inc deleted file mode 100644 index aa93819bc..000000000 --- a/meta-openembedded/meta-python/recipes-connectivity/python-priority/python-priority.inc +++ /dev/null @@ -1,10 +0,0 @@ -DESCRIPTION = "A pure-Python implementation of the HTTP/2 priority tree" -HOMEPAGE = "https://github.com/python-hyper/priority" -LICENSE = "MIT" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=ae57d8a09fc8b6b164d7357339619045" - -SRC_URI[md5sum] = "4f1ff52f7fa448e9d9cb46337ae86d1e" -SRC_URI[sha256sum] = "6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe" - -inherit pypi diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb index fe756b56b..5d84571f9 100644 --- a/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb +++ b/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb @@ -1,3 +1,10 @@ -require python-priority.inc +DESCRIPTION = "A pure-Python implementation of the HTTP/2 priority tree" +HOMEPAGE = "https://github.com/python-hyper/priority" +LICENSE = "MIT" -inherit setuptools3 +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae57d8a09fc8b6b164d7357339619045" + +SRC_URI[md5sum] = "4f1ff52f7fa448e9d9cb46337ae86d1e" +SRC_URI[sha256sum] = "6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-core/images/meta-python-image.bb b/meta-openembedded/meta-python/recipes-core/images/meta-python-image.bb index cc75fe6e4..6353d389b 100644 --- a/meta-openembedded/meta-python/recipes-core/images/meta-python-image.bb +++ b/meta-openembedded/meta-python/recipes-core/images/meta-python-image.bb @@ -2,5 +2,4 @@ require meta-python-image-base.bb SUMMARY = "meta-python build test image" -IMAGE_INSTALL += "packagegroup-meta-python \ - packagegroup-meta-python3" +IMAGE_INSTALL += "packagegroup-meta-python3" diff --git a/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb index 7ee15354a..d497016d4 100644 --- a/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb +++ b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb @@ -2,4 +2,4 @@ require meta-python-image-base.bb SUMMARY = "meta-python ptest test image" -IMAGE_INSTALL += "packagegroup-meta-python-ptest" +IMAGE_INSTALL += "packagegroup-meta-python3-ptest" diff --git a/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb b/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb index c03f610da..61623ac98 100644 --- a/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb +++ b/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb @@ -1,4 +1,4 @@ -SUMMARY = "Meta-oe ptest packagegroups" +SUMMARY = "Meta-python ptest packagegroups" inherit packagegroup @@ -13,62 +13,447 @@ RDEPENDS_packagegroup-meta-python3 = "\ " RDEPENDS_packagegroup-meta-python3 = "\ - python3-pyserial python3-gevent python3-alembic python3-robotframework-seriallibrary \ - python3-rfc3987 python3-xlrd python3-bandit python3-constantly python3-inflection \ - python3-javaobj-py3 python3-sh python3-pycrypto python3-pyasn1 python3-pydbus python3-wtforms \ - python3-pybluez python3-babel python3-parse-type python3-bitarray python3-django-south \ - python3-pyusb python3-prctl python3-jinja2 python3-werkzeug python3-pyjks python3-requests-ftp \ - python3-behave python3-pyyaml python3-tzlocal python3-pretend python3-stevedore \ - python3-sijax python3-langtable python3-requests-file python3-crcmod python3-robotframework \ - python3-pint python3-coverage python3-iso8601 python3-ndg-httpsclient python3-yappi python3-twofish \ - python3-speaklater python3-smbus python3-djangorestframework python3-msgpack python3-jsonpointer \ - python3-flask-script python3-cassandra-driver python3-ujson python3-aws-iot-device-sdk-python \ - python3-pytest-runner python3-pyiface python3-flask-login python3-markupsafe python3-setuptools-scm \ - python3-semver python3-sdnotify python3-flask-user python3-tornado python3-jsonpatch python3-pexpect \ - python3-progress python3-jsonschema python3-xstatic python3-pyroute2 python3-idna python3-sqlalchemy \ - python3-urllib3 python3-flask-mail python3-asn1crypto python3-pyinotify python3-intervals python3-pyperclip \ - python3-flask-bootstrap python3-pyudev python3-decorator python3-pybind11 python3-pluggy python3-redis \ - python3-pycryptodome python3-passlib python3-dominate python3-ply python3-ntplib python3-serpent python3-wrapt \ - python3-attrs python3-appdirs python3-isort python3-evdev python3-incremental python3-click python3-flask-nav \ - python3-webcolors python3-dateutil python3-blinker python3-hyperlink python3-lxml python3-pylint \ - python3-flask-migrate python3-pytest-tempdir python3-flask-restful python3-feedformatter \ - python3-pyasn1-modules python3-scapy python3-html5lib python3-dnspython python3-automat \ - python3-itsdangerous python3-pandas python3-pyfirmata python3-protobuf \ - python3-flask-babel python3-anyjson python3-flask-xstatic python3-multidict python3-prompt-toolkit \ - python3-periphery python3-greenlet python3-pytz python3-pyexpect python3-zopeinterface \ - python3-bcrypt python3-xstatic-font-awesome python3-m2crypto python3-parse python3-attr \ - python3-beautifulsoup4 python3-pycodestyle python3-oauthlib python3-grpcio python3-scrypt \ - python3-pyjwt python3-astroid python3-flask-pymongo python3-wcwidth python3-lazy-object-proxy \ - python3-websockets python3-pyzmq python3-pytest python3-chardet python3-vcversioner python3-whoosh \ - python3-pymisp python3-certifi python3-psutil python3-flask-sqlalchemy python3-humanize \ - python3-grpcio-tools python3-configparser python3-strict-rfc3339 python3-paho-mqtt \ - python3-pytest-helpers-namespace python3-flask python3-flask-wtf python3-visitor python3-pynetlinux \ - python3-requests python3-cryptography-vectors python3-spidev python3-pid python3-pymongo \ - python3-future python3-django python3-unidiff python3-webencodings python3-can python3-pyalsaaudio \ - python3-flask-sijax python3-cryptography python3-twisted python3-netaddr python3-pycparser \ - python3-flask-uploads python3-pysocks python3-cffi python3-editor python3-ptyprocess \ - python3-pyopenssl python3-ordered-set python3-simplejson python3-py \ + pamela \ + pyrtm \ ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "python3-systemd", "", d)} \ + python3-bcrypt \ + python3-flask-mail \ + python3-editor \ + python3-flask-pymongo \ + python3-cffi \ + python3-pillow \ + python3-markupsafe \ + python3-flask-nav \ + python3-asciitree \ + python3-flask-sqlalchemy \ + python3-gevent \ + python3-attrs \ + python3-aenum \ + python3-gast \ + python3-blinker \ + python3-prettytable \ + python3-cmd2 \ + python3-aiofiles \ + python3-anyjson \ + python3-isodate \ + python3-incremental \ + python3-aiohttp-jinja2 \ + python3-aiohttp \ + python3-alembic \ + python3-ansi2html \ + python3-ansicolors \ + python3-argexec \ + python3-appdirs \ + python3-apply-defaults \ + python3-argh \ + python3-ply \ + python3-astroid \ + python3-ndg-httpsclient \ + python3-arpeggio \ + python3-astor \ + python3-pika \ + python3-asn1crypto \ + python3-async-timeout \ + python3-absl \ + python3-atomicwrites \ + python3-attr \ + python3-flask \ + python3-autobahn \ + python3-babel \ + python3-pretend \ + python3-automat \ + python3-ptyprocess \ + python3-aws-iot-device-sdk-python \ + python3-bandit \ + python3-backcall \ + python3-backports-functools-lru-cache \ + python3-beautifulsoup4 \ + python3-betamax \ + python3-behave \ + python3-jsonpointer \ + python3-bitarray \ + python3-bitstring \ + python3-bitstruct \ + python3-cachecontrol \ + python3-booleanpy \ + python3-cachetools \ + python3-can \ + python3-cantools \ + python3-cassandra-driver \ + python3-cbor2 \ + python3-chardet \ + python3-certifi \ + python3-isort \ + python3-colorama \ + python3-cheetah \ + python3-click \ + python3-huey \ + python3-coloredlogs \ + python3-colorlog \ + python3-wheel \ + python3-configshell-fb \ + python3-constantly \ + python3-contextlib2 \ + python3-configargparse \ + python3-crcmod \ + python3-configobj \ + python3-configparser \ + python3-cppy \ + python3-dbussy \ + python3-dateutil \ + python3-distro \ + python3-click-repl \ + python3-redis \ + python3-dominate \ + python3-et-xmlfile \ + python3-feedformatter \ + python3-flask-jsonpify \ + python3-flask-jwt \ + python3-flask-migrate \ + python3-pyinotify \ + python3-flask-restful \ + python3-flask-socketio \ + python3-gmqtt \ + python3-dateparser \ + python3-defusedxml \ + python3-rsa \ + python3-django-south \ + python3-grpcio \ + python3-pybind11-json \ + python3-google-api-python-client \ + python3-h5py \ + python3-dt-schema \ + python3-haversine \ + python3-fasteners \ + python3-flask-bootstrap \ + python3-dbus-next \ + python3-dnspython \ + python3-traitlets \ + python3-pybind11 \ + python3-flask-script \ + python3-flask-sijax \ + python3-html2text \ + python3-html5lib \ + python3-intervals \ + python3-ipy \ + python3-ipaddress \ + python3-iso8601 \ + python3-humanfriendly \ + python3-lrparsing \ + python3-itsdangerous \ + python3-hyperlink \ + python3-idna-ssl \ + python3-jdcal \ + python3-greenstalk \ + python3-icu \ + python3-jsonschema \ + python3-keras-applications \ + python3-idna \ + python3-sympy \ + python3-importlib-metadata \ + python3-langtable \ + python3-lockfile \ + python3-nmap \ + python3-jdatetime \ + python3-monotonic \ + python3-mpmath \ + python3-jedi \ + python3-jsonpatch \ + python3-jsonrpcserver \ + python3-libconf \ + python3-netifaces \ + python3-msm \ + python3-nocaselist \ + python3-keras-preprocessing \ + python3-flask-babel \ + python3-lorem \ + python3-javaobj-py3 \ + python3-passlib \ + python3-pathlib2 \ + python3-pexpect \ + python3-luma-oled \ + python3-pluggy \ + python3-lxml \ + python3-precise-runner \ + python3-padaos \ + python3-progress \ + python3-sqlalchemy \ + python3-sh \ + python3-petact \ + python3-mock \ + python3-msgpack \ + python3-pyasn1 \ + python3-msk \ + python3-openpyxl \ + python3-prctl \ + python3-pyatspi \ + python3-multidict \ + python3-netaddr \ + python3-parse \ + python3-oauthlib \ + python3-pyfirmata \ + python3-pandas \ + python3-padatious \ + python3-prompt-toolkit \ + python3-parse-type \ + python3-cycler \ + python3-decorator \ + python3-django \ + python3-croniter \ + python3-flask-user \ + python3-twitter \ + python3-evdev \ + python3-dynamic-dispatch \ + python3-click-spinner \ + python3-future \ + python3-geojson \ + python3-gunicorn \ + python3-engineio \ + python3-gmpy2 \ + python3-coverage \ + python3-fastnumbers \ + python3-fann2 \ + python3-gnupg \ + python3-flask-login \ + python3-pyzmq \ + python3-cryptography-vectors \ + python3-flask-uploads \ + python3-ecdsa \ + python3-networkx \ + python3-flask-xstatic \ + python3-pint \ + python3-iso3166 \ + python3-imageio \ + python3-mccabe \ + python3-kconfiglib \ + python3-grpcio-tools \ + python3-jinja2 \ + python3-jsmin \ + python3-greenlet \ + python3-idna \ + python3-flask-versioned \ + python3-httplib2 \ + python3-ipython-genutils \ + python3-kiwisolver \ + python3-lz4 \ + python3-obd \ + python3-markdown \ + python3-m2crypto \ + python3-paho-mqtt \ + python3-graphviz \ + python3-pyaudio \ + python3-pako \ + python3-meld3 \ + python3-parallax \ + python3-lazy-object-proxy \ + python3-license-expression \ + python3-luma-core \ + python3-natsort \ + python3-polyline \ + python3-ordered-set \ + python3-packaging \ + python3-parso \ + python3-pycparser \ + python3-pycrypto \ + python3-pydbus \ + python3-pathtools3 \ + python3-periphery \ + python3-pyiface \ + python3-pyjwt \ + python3-pykwalify \ + python3-pylint \ + python3-pynetlinux \ + python3-pickleshare \ + python3-pyopenssl \ + python3-protobuf \ + python3-py \ + python3-pyasn1-modules \ + python3-pyscaffold \ + python3-pyserial \ + python3-pysocks \ + python3-pytoml \ + python3-pytest-helpers-namespace \ + python3-more-itertools \ + python3-pytest-tempdir \ + python3-pyflakes \ + python3-pyrad \ + python3-pyusb \ + python3-pyhamcrest \ + python3-custom-inherit \ + python3-pymysql \ + python3-pyperclip \ + python3-rfc3339-validator \ + python3-pytz \ + python3-scrypt \ + python3-rdflib \ + python3-sijax \ + python3-regex \ + python3-slip-dbus \ + python3-smbus2 \ + python3-pytest-metadata \ + python3-term \ + python3-pystache \ + python3-pep8 \ + python3-pytest-runner \ + python3-pybluez \ + python3-rfc3986-validator \ + python3-pocketsphinx \ + python3-sdnotify \ + python3-pycodestyle \ + python3-pytest \ + python3-speaklater \ + python3-wtforms \ + python3-speedtest-cli \ + python3-pyudev \ + python3-sqlparse \ + python3-pyexpect \ + python3-pytest-html \ + python3-uritemplate \ + python3-cryptography \ + python3-requests \ + python3-test-generator \ + python3-whoosh \ + python3-xstatic-font-awesome \ + python3-tqdm \ + python3-vcversioner \ + python3-semver \ + python3-serpent \ + python3-spidev \ + python3-sqlsoup \ + python3-tornado \ + python3-trafaret \ + python3-urllib3 \ + python3-yappi \ + python3-zipp \ + python3-texttable \ + python3-humanize \ + python3-strict-rfc3339 \ + python3-supervisor \ + python3-toml \ + python3-diskcache \ + python3-requests-futures \ + python3-matplotlib \ + python3-sentry-sdk \ + python3-xlrd \ + python3-xstatic \ + python3-tzlocal \ + python3-wcwidth \ + python3-ntplib \ + python3-u-msgpack-python \ + python3-python-vlc \ + python3-xlsxwriter \ + python3-inflection \ + python3-tabulate \ + python3-typing-extensions \ + python3-pystemd \ + python3-pid \ + python3-pkgconfig \ + python3-pylyrics \ + python3-pyyaml \ + python3-raven \ + python3-stevedore \ + python3-requests-oauthlib \ + python3-rfc3987 \ + python3-psutil \ + python3-robotframework-seriallibrary \ + python3-pulsectl \ + python3-py-ubjson \ + python3-pyalsaaudio \ + python3-simpleeval \ + python3-smbus \ + python3-pychromecast \ + python3-pyjks \ + python3-pymongo \ + python3-spidev \ + python3-pynacl \ + python3-termcolor \ + python3-pyperf \ + python3-qrcode \ + python3-visitor \ + python3-pyroute2 \ + python3-webencodings \ + python3-pyrsistent \ + python3-werkzeug \ + python3-pydicti \ + python3-xmlrunner \ + python3-smpplib \ + python3-pymisp \ + python3-requests-file \ + python3-requests-toolbelt \ + python3-ruamel-yaml \ + python3-setuptools-scm \ + python3-socketio \ + python3-soupsieve \ + python3-textparser \ + python3-tinyrecord \ + python3-twine \ + python3-unidiff \ + python3-watchdog \ + python3-webcolors \ + python3-robotframework \ + python3-xxhash \ + python3-yarl \ + python3-zopeinterface \ + python3-requests-ftp \ + python3-scapy \ + python3-paramiko \ + python3-twofish \ + python3-simplejson \ + python3-snappy \ + python3-versiontools \ + python3-flask-wtf \ + python3-websockets \ + python3-werkzeug \ + python3-wrapt \ + python3-xmltodict \ + python3-trafaret-config \ + python3-twisted \ + python3-txaio \ + python3-typeguard \ + python3-pytest-timeout \ + python3-ujson \ + python3-waitress \ + python3-websocket-client \ + python3-xmodem \ + python3-djangorestframework \ + python3-pytest-asyncio \ + python3-nocasedict \ + python3-yamlloader \ + python3-ipython \ + python3-pycurl \ + gyp \ + python3-jsonref \ " RDEPENDS_packagegroup-meta-python3-extended = "\ - python3-pykickstart \ - python3-meh \ python3-blivet \ - python3-pywbem \ - python3-pyparted \ ${@bb.utils.contains("DISTRO_FEATURES", "x11", "python3-blivetgui", "", d)} \ + python3-cson \ + python3-meh \ + python3-pyephem \ + python3-pykickstart \ + python3-pyparted \ + python3-pywbem \ + python3-pywbemtools \ " RDEPENDS_packagegroup-meta-python3-connectivity = "\ - python3-pytun \ + python3-gsocketpool \ + python3-h2 \ + python3-hpack \ + python3-hyperframe \ python3-mprpc \ + python3-priority \ python3-pyconnman \ - python3-gsocketpool \ + python3-pyro4 \ + python3-thrift \ + python3-txws \ + python3-pytun \ + telepathy-python3 \ " RDEPENDS_packagegroup-meta-python3-ptest = "\ - python3-cryptography \ + python3-cryptography-ptest \ " EXCLUDE_FROM_WORLD = "1" diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp.inc b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp.inc deleted file mode 100644 index 98ed42cc9..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp.inc +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "GYP is a Meta-Build system: a build system that generates other build systems." -HOMEPAGE = "https://gyp.gsrc.io/" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=ab828cb8ce4c62ee82945a11247b6bbd" -SECTION = "devel" - -SRC_URI = "git://chromium.googlesource.com/external/gyp;protocol=https" -SRCREV = "fcd686f1880fa52a1ee78d3e98af1b88cb334528" - -S = "${WORKDIR}/git" -PV = "0.1+git${SRCPV}" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb index 8e48a27fa..d668d1ca1 100644 --- a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb +++ b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb @@ -1,2 +1,15 @@ +DESCRIPTION = "GYP is a Meta-Build system: a build system that generates other build systems." +HOMEPAGE = "https://gyp.gsrc.io/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ab828cb8ce4c62ee82945a11247b6bbd" +SECTION = "devel" + +SRC_URI = "git://chromium.googlesource.com/external/gyp;protocol=https" +SRCREV = "caa60026e223fc501e8b337fd5086ece4028b1c6" + +S = "${WORKDIR}/git" +PV = "0.1+git${SRCPV}" + inherit setuptools3 -require gyp.inc + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc deleted file mode 100644 index c415b35a9..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc +++ /dev/null @@ -1,9 +0,0 @@ -SUMMARY = "Python bindings for Fast Artificial Neural Networks 2.2.0 (FANN >= 2.2.0)" -SECTION = "devel/python" -LICENSE = "LGPLv2" -LIC_FILES_CHKSUM = "file://LICENSE;md5=c73b943dc75f6f65e007c56ac6515c8f" - -SRC_URI[md5sum] = "0b85b418018746d63ed66b55465697a9" -SRC_URI[sha256sum] = "cdca0a65ad48e08320672affe38c3dd4ea15e27821e5e1db9fa2b34299bdd41e" - -DEPENDS += "swig-native libfann" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc deleted file mode 100644 index 0df276d15..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-mail.inc +++ /dev/null @@ -1,12 +0,0 @@ -SUMMARY = "Flask extension for sending email" -DESCRIPTION = "A Flask extension for sending email" -HOMEPAGE = " https://github.com/rduplain/flask-email" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=5b16dfa6d3f275ace5985bb92949f770" - -SRC_URI[md5sum] = "04b35a42a44ec7aa724ec8ce55e2e08e" -SRC_URI[sha256sum] = "22e5eb9a940bf407bcf30410ecc3708f3c56cc44b29c34e1726fe85006935f41" - -PYPI_PACKAGE = "Flask-Mail" - -RDEPENDS_${PN} = "${PYTHON_PN}-flask" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc deleted file mode 100644 index 932ccdf4a..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-nav.inc +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "Easily create navigation for Flask applications." -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://PKG-INFO;md5=2729ee82259d601d90d28b0574d12416" - -SRC_URI[md5sum] = "4d51cfd06d58f8d0fe85775a6696c0e5" -SRC_URI[sha256sum] = "44e40b755380a1e68ab521a2f9174de259a2c94ddcdaabf36b3aca2e110a33f4" - -PYPI_PACKAGE = "flask-nav" - -RDEPENDS_${PN} += "\ - ${PYTHON_PN}-blinker \ - ${PYTHON_PN}-flask \ - " diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc deleted file mode 100644 index 5fc35c193..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc +++ /dev/null @@ -1,15 +0,0 @@ -SUMMARY = "PyMongo support for Flask applications" -DESCRIPTION = "PyMongo support for Flask applications." -HOMEPAGE = "https://github.com/mitsuhiko/flask/" -SECTION = "devel/python" -LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://flask_pymongo/wrappers.py;beginline=1;endline=24;md5=424c4e1047d28e01b4e4634a069c019d" - -SRC_URI[md5sum] = "94df71e6800b1d7915cc91a74b70f959" -SRC_URI[sha256sum] = "620eb02dc8808a5fcb90f26cab6cba9d6bf497b15032ae3ca99df80366e33314" - -PYPI_PACKAGE = "Flask-PyMongo" - -DEPENDS = "${PYTHON_PN}-vcversioner ${PYTHON_PN}-vcversioner-native" - -RDEPENDS_${PN} = "${PYTHON_PN}-pymongo ${PYTHON_PN}-flask" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc deleted file mode 100644 index adef32cc8..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-user.inc +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "Customizable user account management for Flask" -DESCRIPTION = "Customizable User Account Management for Flask; Register \ -Confirm email, Login, Change username, Change password, Forgot Password \ -and more." -HOMEPAGE = " https://github.com/lingthio/Flask-User" -LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=97de97cd9d6e23c88129d884588ce71a" - -SRC_URI[md5sum] = "f7965e66ca139c8436896da07e66c21f" -SRC_URI[sha256sum] = "601abcc0343dfbae0c56273d98362d5cdc266ac84d20b3f65a212e4a2c83b302" - -PYPI_PACKAGE = "Flask-User" - -RDEPENDS_${PN} = "${PYTHON_PN}-flask \ - ${PYTHON_PN}-flask-login \ - ${PYTHON_PN}-flask-mail \ - ${PYTHON_PN}-babel" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/0002-setup.py-do-not-query-for-include-dir.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/0002-setup.py-do-not-query-for-include-dir.patch deleted file mode 100644 index 7536b71a6..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent/0002-setup.py-do-not-query-for-include-dir.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a53ed6b2f967a5f95e69d51cad3f8c120d7df65b Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 7 Feb 2019 15:21:15 +0100 -Subject: [PATCH] setup.py: do not query for include dir - -As this will return the native python directory erroneously. - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - setup.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/setup.py b/setup.py -index 86d6c5a..5d22291 100755 ---- a/setup.py -+++ b/setup.py -@@ -52,7 +52,7 @@ from _setupares import ARES - # Get access to the greenlet header file. - # The sysconfig dir is not enough if we're in a virtualenv - # See https://github.com/pypa/pip/issues/4610 --include_dirs = [sysconfig.get_path("include")] -+include_dirs = [] - venv_include_dir = os.path.join(sys.prefix, 'include', 'site', - 'python' + sysconfig.get_python_version()) - venv_include_dir = os.path.abspath(venv_include_dir) diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc deleted file mode 100644 index b14f82501..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-systemd.inc +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Python interface for libsystemd" -HOMEPAGE = "https://github.com/systemd/python-systemd" -LICENSE = "LGPLv2.1+" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fbd65380cdd255951079008b364516c" - -PYPI_PACKAGE = "systemd-python" -DEPENDS += "systemd (<=234)" -RDEPENDS_${PN} += "systemd ${PYTHON_PN}-syslog ${PYTHON_PN}-logging" -REQUIRED_DISTRO_FEATURES = "systemd" -inherit pypi features_check - -SRC_URI[md5sum] = "5071ea5bcb976186e92a3f5e75df221d" -SRC_URI[sha256sum] = "fd0e44bf70eadae45aadc292cb0a7eb5b0b6372cd1b391228047d33895db83e7" - -# allow for common patches for python- and python3-systemd -FILESEXTRAPATHS_prepend := "${THISDIR}/python-systemd:" - -SRC_URI += "file://endian.patch" - -SRC_URI_append_libc-musl = " file://0001-Provide-implementation-of-strndupa-for-musl.patch" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.10.0.bb index a8f47ba4c..5be00ccb4 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.9.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.10.0.bb @@ -4,11 +4,11 @@ SECTION = "devel/python" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" -SRC_URI = "git://github.com/abseil/abseil-py.git" -SRCREV ?= "06edd9c20592cec39178b94240b5e86f32e19768" +SRC_URI[md5sum] = "9cb38ddf7a2f000e2c92e5d9dfa36ffa" +SRC_URI[sha256sum] = "b20f504a7871a580be5268a18fbad48af4203df5d33dbc9272426cb806245a45" -inherit setuptools3 +PYPI_PACKAGE = "absl-py" -S = "${WORKDIR}/git" +inherit pypi setuptools3 BBCLASSEXTEND = "native" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.3.bb index 22630604b..0e7f629d4 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.4.3.bb @@ -4,8 +4,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=bd64aba1b968c2bfbc2b525a181ce85c" inherit pypi setuptools3 -SRC_URI[md5sum] = "1d67bdbd3abd33f0319afcd29bc59686" -SRC_URI[sha256sum] = "035ab00497217628bf5d0be82d664d8713ab13d37b630084da8e1f98facf4dbf" +SRC_URI[md5sum] = "6051576d8e25e3d4a9fd818d79531bad" +SRC_URI[sha256sum] = "5334f32314fb2a56d86b4c4dd1ae34b08c03cae4cb888bc699942104d66bc245" PYPI_PACKAGE = "alembic" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asciitree_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asciitree_0.3.3.bb new file mode 100644 index 000000000..833732bd4 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asciitree_0.3.3.bb @@ -0,0 +1,9 @@ +SUMMARY = "Draws ASCII trees." +HOMEPAGE = "http://github.com/mbr/asciitree" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a985ccb0df374f2a8cab75010bf8db73" + +SRC_URI[md5sum] = "2570b31e563b69da1aff54509db8ac6a" +SRC_URI[sha256sum] = "4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_19.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_20.2.0.bb index 7ff8049e5..c2a5b9051 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_19.3.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-attrs_20.2.0.bb @@ -3,8 +3,8 @@ HOMEPAGE = "http://www.attrs.org/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff" -SRC_URI[sha256sum] = "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" -SRC_URI[md5sum] = "5b2db50fcc31be34d32798183c9bd062" +SRC_URI[sha256sum] = "26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594" +SRC_URI[md5sum] = "7be95e1b35e9385d71a0017a48217efc" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.5.3.bb index 15393001a..e36a17027 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.5.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_1.5.3.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/ilanschnell/bitarray" LICENSE = "PSF" LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=2ad702cdcd49e8d2ac01d7e7d0810d2d" -SRC_URI[md5sum] = "ccd872c5effef77bf4028c67c0619f6c" -SRC_URI[sha256sum] = "38fe66d5f7720835703a07fe8d0a4b5eda87f692f3cf4fb01543407b79857edf" +SRC_URI[md5sum] = "7cfa242b99351646fab0d76b05aab747" +SRC_URI[sha256sum] = "567631fc922b1c2c528c376795f18dcc0604d18702e0b8b50e8e35f0474214a5" inherit setuptools3 pypi diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.3.bb index 57c28954a..dbdd16f66 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.3.bb @@ -4,8 +4,8 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf" DEPENDS += "libffi ${PYTHON_PN}-pycparser" -SRC_URI[md5sum] = "3cc2f1daf62dd66eda79b4d6281cebfc" -SRC_URI[sha256sum] = "ae8f34d50af2c2154035984b8b5fc5d9ed63f32fe615646ab435b05b132ca91b" +SRC_URI[md5sum] = "c2a47ffd5d183b193ac8ed3414dcfd07" +SRC_URI[sha256sum] = "f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click-repl_0.1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-repl_0.1.6.bb new file mode 100644 index 000000000..fce9f9805 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-repl_0.1.6.bb @@ -0,0 +1,9 @@ +SUMMARY = "REPL plugin for Click" +HOMEPAGE = "https://github.com/untitaker/click-repl" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=fee2943fdd4d8afbac9ccc1c8ac137d5" + +SRC_URI[md5sum] = "2d5f4d42cbd1da9a50a49dff4d6087ca" +SRC_URI[sha256sum] = "b9f29d52abc4d6059f8e276132a111ab8d94980afe6a5432b9d996544afa95d5" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb new file mode 100644 index 000000000..418f8a32a --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-click-spinner_0.1.10.bb @@ -0,0 +1,9 @@ +SUMMARY = "Spinner for Click" +HOMEPAGE = "https://github.com/click-contrib/click-spinner" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489" + +SRC_URI[md5sum] = "ab68ed404401421819c81cc6c0677a87" +SRC_URI[sha256sum] = "87eacf9d7298973a25d7615ef57d4782aebf913a532bba4b28a37e366e975daf" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.3.9.bb index a44f02f00..e677a6962 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.3.3.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.3.9.bb @@ -5,8 +5,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=9791cd24ca7d1807388ccd55cd066def" DEPENDS += "${PYTHON_PN}-setuptools-scm-native" -SRC_URI[md5sum] = "c8ffa926c50673f00fd8ff8533e9f959" -SRC_URI[sha256sum] = "38015008ff4639edfd66591063a0e9bb75a62dccb14ee3ec7bf3a6cb130de5cf" +SRC_URI[md5sum] = "f5fbd528e7b5977ad71466947af61f99" +SRC_URI[sha256sum] = "7f8035faafda15d26098bf2ffe16aaba1c78511ce13e0815d2efe58ba392b501" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.3.bb index 48e352c1d..2354c5e73 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.2.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.3.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://coverage.readthedocs.io" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93" -SRC_URI[md5sum] = "9e6165146b9bda60a779953c79e8ca54" -SRC_URI[sha256sum] = "a34cb28e0747ea15e82d13e14de606747e9e484fb28d63c999483f5d5188e89b" +SRC_URI[md5sum] = "c2faf2ccc498ce16fd48cc9201c520d7" +SRC_URI[sha256sum] = "280baa8ec489c4f542f8940f9c4c2181f0306a8ee1a54eceba071a449fb870a0" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.9.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.1.bb index 60316fc74..59347c94e 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.9.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.1.bb @@ -4,8 +4,8 @@ SECTION = "devel/python" LICENSE = "Apache-2.0 | BSD" LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4" -SRC_URI[md5sum] = "657349b8de73959fc49ba15fd7346b58" -SRC_URI[sha256sum] = "99ac91c4d89572399b097240809af1b8f67f4bedf43398d290c9b2b3d9f491b4" +SRC_URI[md5sum] = "1ba5b0743e2876e909f7cfc28b744f27" +SRC_URI[sha256sum] = "2660bc3a720d3955341803195ae5352a236c5f26e01a178c44fc5ee1f0ef1182" PYPI_PACKAGE = "cryptography_vectors" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_3.1.bb index 05a2350e3..9ac23cda4 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_3.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_3.1.bb @@ -6,8 +6,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=097f805837700cfac572ac274cd38124" LDSHARED += "-pthread" -SRC_URI[md5sum] = "163608a7cb838c6b39360e1e64377d54" -SRC_URI[sha256sum] = "8e924dbc025206e97756e8903039662aa58aa9ba357d8e1d8fc29e3092322053" +SRC_URI[md5sum] = "aa91e4974981b29e99b863c54034c361" +SRC_URI[sha256sum] = "26409a473cc6278e4c90f782cd5968ebad04d3911ed1c402fc86908c17633e08" SRC_URI += " \ file://run-ptest \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.3.0.bb new file mode 100644 index 000000000..489e71984 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.3.0.bb @@ -0,0 +1,12 @@ +SUMMARY = "A Python package that provides customized docstring inheritance schemes between derived classes and their parents." +HOMEPAGE = "https://github.com/rsokl/custom_inherit" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=adc1f231c76ee2f1f36025d56926ba2c" + +PYPI_PACKAGE = "custom_inherit" +PYPI_SRC_URI = "https://files.pythonhosted.org/packages/0e/82/c5bb7ec49a7892a2c583e1017597e3921c59171f10602086ca93c8a83baa/custom_inherit-${PV}.tar.gz" + +SRC_URI[md5sum] = "adf2850dc0e488df959821a5d4c16cbd" +SRC_URI[sha256sum] = "1609d283c2cffce3a58baf7c0c22b655c55f85e1ec39c4717a4423d34610723a" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.4.bb index 4da4be81b..0a5f19974 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.3.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbus-next_0.1.4.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/acrisci/python-dbus-next" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=94e750c96e56788499b56c81de91431c" -SRC_URI[md5sum] = "a823270b11c8dd7932c12adc6b2fadbb" -SRC_URI[sha256sum] = "4dd9097778224c69228f7f2a0f52e9b13ec2c75e87974ad312525c927835e8fb" +SRC_URI[md5sum] = "0d44e12e8689637a0c048ec7bb51d842" +SRC_URI[sha256sum] = "1b1942bffcc8c9a5bd6834257df227a55ee28e07dd413ead82ddd23115652363" PYPI_PACKAGE = "dbus_next" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-diskcache_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-diskcache_5.0.3.bb index 91cff0cd1..7e89fa68a 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-diskcache_4.1.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-diskcache_5.0.3.bb @@ -1,10 +1,10 @@ DESCRIPTION = "Disk Cache -- Disk and file backed persistent cache." HOMEPAGE = "http://www.grantjenks.com/docs/diskcache/" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=9e046ce8fae71087134866418f646ec3" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c985b6a9269e57a1073d5f142d68eb68" -SRC_URI[md5sum] = "21c9945e7707799e1c64956f8a54d4c3" -SRC_URI[sha256sum] = "bcee5a59f9c264e2809e58d01be6569a3bbb1e36a1e0fb83f7ef9b2075f95ce0" +SRC_URI[md5sum] = "86fb97b0ff87cc5f1b31654ee0d341a1" +SRC_URI[sha256sum] = "5f4bc2018d653a1d7bbdcdecce45ea12061bf8d3b5f0323b7a5402054a285c52" PYPI_PACKAGE = "diskcache" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.13.bb deleted file mode 100644 index 55eacdff2..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.13.bb +++ /dev/null @@ -1,9 +0,0 @@ -require python-django.inc -inherit setuptools3 - -SRC_URI[md5sum] = "30c688af9b63c4800ef9b044e0dd4145" -SRC_URI[sha256sum] = "84f370f6acedbe1f3c41e1a02de44ac206efda3355e427139ecb785b5f596d80" - -RDEPENDS_${PN} += "\ - ${PYTHON_PN}-sqlparse \ -" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.16.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.16.bb new file mode 100644 index 000000000..0715abbd4 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.16.bb @@ -0,0 +1,9 @@ +require python-django.inc +inherit setuptools3 + +SRC_URI[md5sum] = "93faf5bbd54a19ea49f4932a813b9758" +SRC_URI[sha256sum] = "62cf45e5ee425c52e411c0742e641a6588b7e8af0d2c274a27940931b2786594" + +RDEPENDS_${PN} += "\ + ${PYTHON_PN}-sqlparse \ +" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.1.1.bb new file mode 100644 index 000000000..ed6513d0c --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.1.1.bb @@ -0,0 +1,14 @@ +require python-django.inc +inherit setuptools3 + +SRC_URI[md5sum] = "d5e894fb3c46064e84e9dc68a08a46d0" +SRC_URI[sha256sum] = "59c8125ca873ed3bdae9c12b146fbbd6ed8d0f743e4cf5f5817af50c51f1fc2f" + +RDEPENDS_${PN} += "\ + ${PYTHON_PN}-sqlparse \ +" + +# Set DEFAULT_PREFERENCE so that the LTS version of django is built by +# default. To build the 3.x branch, +# PREFERRED_VERSION_python3-django = "3.1.1" can be added to local.conf +DEFAULT_PREFERENCE = "-1" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.2.bb index 75dd4ef9f..204433894 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.5.2.bb @@ -2,8 +2,8 @@ SUMMARY = "Dominate is a Python library for creating and manipulating HTML docum LICENSE = "LGPLv3" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b52f2d57d10c4f7ee67a7eb9615d5d24" -SRC_URI[md5sum] = "35eeb6b5587c8c9a51cd22c83e07ac49" -SRC_URI[sha256sum] = "9b05481605ea8c0afd0a98c0156a9fb78d9c406368d66b3e6fedf36920fb9d78" +SRC_URI[md5sum] = "4a249c71cb009815923e9a47fa03ca08" +SRC_URI[sha256sum] = "456facce7a7ccfd9363948109cf1e978d48c58e46a46b01c71b4c0adc73b1928" inherit pypi setuptools3 ptest diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.15.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.16.0.bb index aba62f3ef..36bb246fd 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.15.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.16.0.bb @@ -6,7 +6,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=66ffc5e30f76cbb5358fe54b645e5a1d" DEPENDS += "python3-pip python3-pbr" PYPI_PACKAGE = "ecdsa" -SRC_URI[sha256sum] = "8f12ac317f8a1318efa75757ef0a651abe12e51fc1af8838fb91079445227277" +SRC_URI[md5sum] = "d593df1ab57da611dca76f7328c47b21" +SRC_URI[sha256sum] = "494c6a853e9ed2e9be33d160b41d47afc50a6629b993d2b9c5ad7bb226add892" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb index a04c961f4..3fdc1363c 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb @@ -1,4 +1,13 @@ -require python-fann2.inc -inherit pypi setuptools3 +SUMMARY = "Python bindings for Fast Artificial Neural Networks 2.2.0 (FANN >= 2.2.0)" +SECTION = "devel/python" +LICENSE = "LGPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c73b943dc75f6f65e007c56ac6515c8f" + +SRC_URI[md5sum] = "0b85b418018746d63ed66b55465697a9" +SRC_URI[sha256sum] = "cdca0a65ad48e08320672affe38c3dd4ea15e27821e5e1db9fa2b34299bdd41e" SRC_URI += " file://0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch" + +inherit pypi setuptools3 + +DEPENDS += "swig-native libfann" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_1.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_2.0.0.bb index d968be3ee..8a01b49b4 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_1.0.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-babel_2.0.0.bb @@ -2,7 +2,8 @@ DESCRIPTION = "i18n and l10n support for Flask based on babel and pytz" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=51917f3e8e858f5ae295a7d0e2eb3cc9" -SRC_URI[sha256sum] = "d6a70468f9a8919d59fba2a291a003da3a05ff884275dddbd965f3b98b09ab3e" +SRC_URI[md5sum] = "50d5e92d96ef58787bf85b5a1b0a5567" +SRC_URI[sha256sum] = "f9faf45cdb2e1a32ea2ec14403587d4295108f35017a7821a2b1acb8cfd9257d" PYPI_PACKAGE = "Flask-Babel" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb index 0b963be56..7a89cac9d 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-mail_0.9.1.bb @@ -1,2 +1,14 @@ +SUMMARY = "Flask extension for sending email" +DESCRIPTION = "A Flask extension for sending email" +HOMEPAGE = " https://github.com/rduplain/flask-email" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5b16dfa6d3f275ace5985bb92949f770" + +SRC_URI[md5sum] = "04b35a42a44ec7aa724ec8ce55e2e08e" +SRC_URI[sha256sum] = "22e5eb9a940bf407bcf30410ecc3708f3c56cc44b29c34e1726fe85006935f41" + +PYPI_PACKAGE = "Flask-Mail" + inherit pypi setuptools3 -require python-flask-mail.inc + +RDEPENDS_${PN} = "${PYTHON_PN}-flask" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.2.bb deleted file mode 100644 index c98cbfddb..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.2.bb +++ /dev/null @@ -1,2 +0,0 @@ -inherit pypi setuptools3 -require python-flask-migrate.inc diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.3.bb index 5202f8be0..54fa1dd97 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-migrate.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_2.5.3.bb @@ -2,11 +2,13 @@ DESCRIPTION = "SQLAlchemy database migrations for Flask applications using Alemb LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b69377f79f3f48c661701236d5a6a85" -SRC_URI[md5sum] = "bedeb0366740fda6912fea683be11968" -SRC_URI[sha256sum] = "a96ff1875a49a40bd3e8ac04fce73fdb0870b9211e6168608cbafa4eb839d502" +SRC_URI[md5sum] = "707d4a5fd4e11d3113a1228aa7793176" +SRC_URI[sha256sum] = "a69d508c2e09d289f6e55a417b3b8c7bfe70e640f53d2d9deb0d056a384f37ee" PYPI_PACKAGE = "Flask-Migrate" +inherit pypi setuptools3 + RDEPENDS_${PN} += "\ ${PYTHON_PN}-flask-sqlalchemy \ ${PYTHON_PN}-alembic \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb index d25115251..77735e325 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-nav_0.6.bb @@ -1,2 +1,15 @@ +DESCRIPTION = "Easily create navigation for Flask applications." +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://PKG-INFO;md5=2729ee82259d601d90d28b0574d12416" + +SRC_URI[md5sum] = "4d51cfd06d58f8d0fe85775a6696c0e5" +SRC_URI[sha256sum] = "44e40b755380a1e68ab521a2f9174de259a2c94ddcdaabf36b3aca2e110a33f4" + +PYPI_PACKAGE = "flask-nav" + inherit pypi setuptools3 -require python-flask-nav.inc + +RDEPENDS_${PN} += "\ + ${PYTHON_PN}-blinker \ + ${PYTHON_PN}-flask \ + " diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb index 2102554b6..e3c744d92 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_2.3.0.bb @@ -1,2 +1,17 @@ +SUMMARY = "PyMongo support for Flask applications" +DESCRIPTION = "PyMongo support for Flask applications." +HOMEPAGE = "https://github.com/mitsuhiko/flask/" +SECTION = "devel/python" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://flask_pymongo/wrappers.py;beginline=1;endline=24;md5=424c4e1047d28e01b4e4634a069c019d" + +SRC_URI[md5sum] = "94df71e6800b1d7915cc91a74b70f959" +SRC_URI[sha256sum] = "620eb02dc8808a5fcb90f26cab6cba9d6bf497b15032ae3ca99df80366e33314" + +PYPI_PACKAGE = "Flask-PyMongo" + inherit pypi setuptools3 -require python-flask-pymongo.inc + +DEPENDS = "${PYTHON_PN}-vcversioner ${PYTHON_PN}-vcversioner-native" + +RDEPENDS_${PN} = "${PYTHON_PN}-pymongo ${PYTHON_PN}-flask" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.7.bb deleted file mode 100644 index 6bff59a56..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.7.bb +++ /dev/null @@ -1,2 +0,0 @@ -inherit setuptools3 -require python-flask-restful.inc diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.8.bb index dcbcd0d76..3de916afd 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-restful.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-restful_0.3.8.bb @@ -6,10 +6,10 @@ HOMEPAGE = "https://github.com/flask-restful/flask-restful" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=685bb55ed99a366bb431995f5eef2783" -SRC_URI[md5sum] = "a7217ef1159be38af5faf61aa09aabef" -SRC_URI[sha256sum] = "f8240ec12349afe8df1db168ea7c336c4e5b0271a36982bff7394f93275f2ca9" +SRC_URI[md5sum] = "e8051ff104ab4b3b867ba18d28953fae" +SRC_URI[sha256sum] = "5ea9a5991abf2cb69b4aac19793faac6c032300505b325687d7c305ffaa76915" -inherit pypi +inherit pypi setuptools3 PYPI_PACKAGE = "Flask-RESTful" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.2.1.bb deleted file mode 100644 index ffc4aa7fd..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.2.1.bb +++ /dev/null @@ -1,2 +0,0 @@ -inherit setuptools3 -require python-flask-socketio.inc diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-socketio.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.3.1.bb index 8d778d4bf..b8631bf50 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-socketio.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_4.3.1.bb @@ -5,12 +5,12 @@ SECTION = "devel/python" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=38cc21254909604298ce763a6e4440a0" -inherit pypi +inherit pypi setuptools3 PYPI_PACKAGE = "Flask-SocketIO" -SRC_URI[md5sum] = "b23222fb7dd2f0676d78bbe24153fd80" -SRC_URI[sha256sum] = "2172dff1e42415ba480cee02c30c2fc833671ff326f1598ee3d69aa02cf768ec" +SRC_URI[md5sum] = "d7992b0b4aaf473b7eff21fc14e8d1b2" +SRC_URI[sha256sum] = "36c1d5765010d1f4e4f05b4cc9c20c289d9dc70698c88d1addd0afcfedc5b062" RDEPENDS_${PN} += "\ ${PYTHON_PN}-flask \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.1.bb deleted file mode 100644 index 07f45bcff..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.1.bb +++ /dev/null @@ -1,2 +0,0 @@ -inherit pypi setuptools3 -require python-flask-sqlalchemy.inc diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.4.bb index 86ba9dda5..2755c7d6b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-sqlalchemy_2.4.4.bb @@ -2,9 +2,11 @@ DESCRIPTION = "Adds SQLAlchemy support to your Flask application." LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75" -SRC_URI[md5sum] = "1f5781cf3e1a2b1aabda47a5b20d2073" -SRC_URI[sha256sum] = "6974785d913666587949f7c2946f7001e4fa2cb2d19f4e69ead02e4b8f50b33d" +SRC_URI[md5sum] = "63a522cb82a75292dc8bc77b6d26187a" +SRC_URI[sha256sum] = "bfc7150eaf809b1c283879302f04c42791136060c6eeb12c0c6674fb1291fae5" PYPI_PACKAGE = "Flask-SQLAlchemy" +inherit pypi setuptools3 + RDEPENDS_${PN} = "${PYTHON_PN}-sqlalchemy ${PYTHON_PN}-flask" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb index 251017f81..a59019af8 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-user_0.6.19.bb @@ -1,2 +1,19 @@ +SUMMARY = "Customizable user account management for Flask" +DESCRIPTION = "Customizable User Account Management for Flask; Register \ +Confirm email, Login, Change username, Change password, Forgot Password \ +and more." +HOMEPAGE = " https://github.com/lingthio/Flask-User" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=97de97cd9d6e23c88129d884588ce71a" + +SRC_URI[md5sum] = "f7965e66ca139c8436896da07e66c21f" +SRC_URI[sha256sum] = "601abcc0343dfbae0c56273d98362d5cdc266ac84d20b3f65a212e4a2c83b302" + +PYPI_PACKAGE = "Flask-User" + inherit pypi setuptools3 -require python-flask-user.inc + +RDEPENDS_${PN} = "${PYTHON_PN}-flask \ + ${PYTHON_PN}-flask-login \ + ${PYTHON_PN}-flask-mail \ + ${PYTHON_PN}-babel" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb deleted file mode 100644 index 52362a865..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.2.bb +++ /dev/null @@ -1,2 +0,0 @@ -inherit pypi setuptools3 -require python-flask-wtf.inc diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.3.bb index 863671153..213a0b58b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-wtf_0.14.3.bb @@ -2,11 +2,13 @@ DESCRIPTION = "Simple integration of Flask and WTForms." LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=3ca6bb31670492f791e6a9f2fb9f8a80" -SRC_URI[md5sum] = "586f50f233926cade42e3d744aca3e8f" -SRC_URI[sha256sum] = "5d14d55cfd35f613d99ee7cba0fc3fbbe63ba02f544d349158c14ca15561cc36" +SRC_URI[md5sum] = "1b60b7dd1245b0d0173c21123717af61" +SRC_URI[sha256sum] = "d417e3a0008b5ba583da1763e4db0f55a1269d9dd91dcc3eb3c026d3c5dbd720" PYPI_PACKAGE = "Flask-WTF" +inherit pypi setuptools3 + RDEPENDS_${PN} = "\ ${PYTHON_PN}-flask \ ${PYTHON_PN}-itsdangerous \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.1.bb deleted file mode 100644 index cd439900c..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.1.bb +++ /dev/null @@ -1,2 +0,0 @@ -inherit pypi setuptools3 -require python-flask.inc diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.2.bb index 1263383da..23799617f 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_1.1.2.bb @@ -6,11 +6,13 @@ HOMEPAGE = "https://github.com/mitsuhiko/flask/" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75" -SRC_URI[md5sum] = "0e3ed44ece1c489ed835d1b7047e349c" -SRC_URI[sha256sum] = "13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52" - -CLEANBROKEN = "1" +SRC_URI[md5sum] = "0da4145d172993cd28a6c619630cc19c" +SRC_URI[sha256sum] = "4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060" PYPI_PACKAGE = "Flask" +inherit pypi setuptools3 + +CLEANBROKEN = "1" + RDEPENDS_${PN} = "${PYTHON_PN}-werkzeug ${PYTHON_PN}-jinja2 ${PYTHON_PN}-itsdangerous ${PYTHON_PN}-click" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.4.0.bb deleted file mode 100644 index df688e424..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_1.4.0.bb +++ /dev/null @@ -1,2 +0,0 @@ -require python-gevent.inc -inherit setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_20.6.2.bb index bc89d104a..dbeb3a60c 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python-gevent.inc +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gevent_20.6.2.bb @@ -18,11 +18,10 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/python-gevent:" SRC_URI_append = " \ file://libev-conf.patch;patch=1;pnum=1 \ - file://0002-setup.py-do-not-query-for-include-dir.patch \ " -SRC_URI[md5sum] = "6b9dd98917061803d9158e5258b8f412" -SRC_URI[sha256sum] = "1eb7fa3b9bd9174dfe9c3b59b7a09b768ecd496debfc4976a9530a3e15c990d1" +SRC_URI[md5sum] = "27b07fe9fdfff2d75e3d140e890489b1" +SRC_URI[sha256sum] = "a23c2abf08e851c988723f6a2996d495f513a2c0dc70f9956af03af8debdb5d1" # The python-gevent has no autoreconf ability # and the logic for detecting a cross compile is flawed @@ -32,4 +31,4 @@ do_configure_append() { sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/deps/c-ares/configure } -inherit pypi +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.12.1.bb index 37b6fc621..d79ac3c39 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.10.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_1.12.1.bb @@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/googleapis/google-api-python-client" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=94023d14f6b58272fd885e4e3f2f08b3" -SRC_URI[md5sum] = "a0064953388af9f9c61d8347f1e2ae0c" -SRC_URI[sha256sum] = "fa24f07f6124ff2e91ee9b7550e240481bcb31b8f77a75e8d481be1c44a6ff07" +SRC_URI[md5sum] = "92106822131f76ca77b77009674e78e4" +SRC_URI[sha256sum] = "ddadc243ce627512c2a27e11d369f5ddf658ef80dbffb247787499486ef1ea98" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenstalk_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenstalk_1.0.1.bb new file mode 100644 index 000000000..9447c1836 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenstalk_1.0.1.bb @@ -0,0 +1,12 @@ +SUMMARY = "A Python 3 client for the beanstalkd work queue" +HOMEPAGE = "https://github.com/mayhewj/greenstalk" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8f98432ba1fce3933c556430fd47298f" + +SRC_URI[md5sum] = "3374649586a8016fecaf0ce5ecf9985d" +SRC_URI[sha256sum] = "0c9f2af79ac8ea526891ae8d7e9500341a0f657465a541d6eaedb35ff70f4fe3" + +RDEPENDS_${PN} += "python3-io python3-core" + +inherit pypi +inherit setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.0.bb index fc2cc7d6f..6e02fcf71 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.2.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.0.bb @@ -2,8 +2,8 @@ SUMMARY = "Calculate the distance between 2 points on Earth" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" -SRC_URI[md5sum] = "6b1badeb63aac6214c978d07a4ecd171" -SRC_URI[sha256sum] = "b710aaf32c442a6d04aa89678be55e3f6c11f9752fc01c216e89b13120b36269" +SRC_URI[md5sum] = "ff2d43a74195ec00c42ccd5da2a3f3de" +SRC_URI[sha256sum] = "72c76855ac25e6ad054c7ed380e95c1a96803185f005dd11f40ccaa9620b551f" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.5.1.bb index 0a3b7734c..b5cde669f 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.5.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-inflection_0.5.1.bb @@ -4,8 +4,8 @@ LICENSE = "MIT" SECTION = "devel/python" LIC_FILES_CHKSUM = "file://LICENSE;md5=2fb6fa1a6f1792d78de19ad1bb653c31" -SRC_URI[md5sum] = "87b2ab6ffdd6e15aa31d109ce5ff10bb" -SRC_URI[sha256sum] = "f576e85132d34f5bf7df5183c2c6f94cfb32e528f53065345cf71329ba0b8924" +SRC_URI[md5sum] = "c3287d4f0e3bdf625a52d655cc514403" +SRC_URI[sha256sum] = "1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417" inherit pypi setuptools3 ptest diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.17.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.18.1.bb index ddcddd60b..8ee92167d 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.17.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.18.1.bb @@ -6,8 +6,8 @@ LIC_FILES_CHKSUM = "file://COPYING.rst;md5=59b20262b8663cdd094005bddf47af5f" PYPI_PACKAGE = "ipython" -SRC_URI[md5sum] = "1f2257d771de9d2fb40d9e3cfcea429d" -SRC_URI[sha256sum] = "b70974aaa2674b05eb86a910c02ed09956a33f2dd6c71afc60f0b128a77e7f28" +SRC_URI[md5sum] = "f2db1158dc40d70a31b6bbef86e74789" +SRC_URI[sha256sum] = "a331e78086001931de9424940699691ad49dfb457cea31f5471eae7b78222d5e" RDEPENDS_${PN} = "\ ${PYTHON_PN}-setuptools \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.13.bb index 74b5bdcb8..9e7494b3e 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.12.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_0.1.13.bb @@ -3,8 +3,8 @@ HOMEPAGE = "http://pyiso8601.readthedocs.org/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=b05625f2336fa024e8d57e65c6595844" -SRC_URI[md5sum] = "4de940f691c5ea759fb254384c8ddcf6" -SRC_URI[sha256sum] = "49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82" +SRC_URI[md5sum] = "df6e924305fd799d90be63336b2ab8b3" +SRC_URI[sha256sum] = "f7dec22af52025d4526be94cc1303c7d8f5379b746a3f54a8c8446384392eeb1" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.5.2.bb index 6b1cee40d..0d0415786 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.4.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.5.2.bb @@ -4,8 +4,8 @@ LICENSE = "MIT" SECTION = "devel/python" LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=8227180126797a0148f94f483f3e1489" -SRC_URI[md5sum] = "59592b6e14beba48149d651e900e3815" -SRC_URI[sha256sum] = "d488ba1c5a2db721669cc180180d5acf84ebdc5af7827f7aaeaa75f73cf0e2b8" +SRC_URI[md5sum] = "844c49ad1bf16a957b490c27b3b9844f" +SRC_URI[sha256sum] = "171c5f365791073426b5ed3a156c2081a47f88c329161fd28228ff2da4c97ddb" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.51.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.52.bb index 8340382d1..e6ccd7b54 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.51.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.52.bb @@ -6,8 +6,8 @@ SECTION = "devel/python" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" -SRC_URI[md5sum] = "5d28198fa933dac5c037108d8f5cf3bb" -SRC_URI[sha256sum] = "8d4615cc0bb0fa49faa05b55ff49b1f41122b8092ca18a5d10f1e1699d6d7b3c" +SRC_URI[md5sum] = "240a62b84ed29f6530ceae60609f7eff" +SRC_URI[sha256sum] = "a2c499704c91c0a23e5db92e80ad1d45e51466b82ffaee478e5bb781460b3db5" inherit pypi setuptools3 python3native diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.16.1.bb index 17445e727..3428dbe9f 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.15.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_1.16.1.bb @@ -6,8 +6,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=eda804060ba2312e41fe96b6fa334fd7" inherit pypi setuptools3 -SRC_URI[md5sum] = "9c890fa8e387a035ff0d1ae96a0715f1" -SRC_URI[sha256sum] = "e0e14c762695fb8758e8b15cfd28cd4c1618bf2fd93157c8770a2e8e0e254ae5" +SRC_URI[md5sum] = "de7bda49c4146ba242923a88c587cd7a" +SRC_URI[sha256sum] = "2181a60906fea3104dcfa3923f9654928502cd7541ff9b4d76c6ae29c6a9d9fc" CLEANBROKEN = "1" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.3.2.bb index 6273ee2f2..a2e7074d7 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.3.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.3.2.bb @@ -7,7 +7,7 @@ HOMEPAGE = "https://github.com/matplotlib/matplotlib" SECTION = "devel/python" LICENSE = "PSF" LIC_FILES_CHKSUM = "\ - file://setup.py;beginline=251;endline=251;md5=e0ef37de7122ce842bcd1fb54482b353 \ + file://setup.py;beginline=259;endline=259;md5=e0ef37de7122ce842bcd1fb54482b353 \ file://LICENSE/LICENSE;md5=afec61498aa5f0c45936687da9a53d74 \ " DEPENDS = "\ @@ -19,8 +19,8 @@ DEPENDS = "\ python3-certifi-native \ " -SRC_URI[md5sum] = "f3a405f340be5b151cb2042c4d8d16f7" -SRC_URI[sha256sum] = "87f53bcce90772f942c2db56736788b39332d552461a5cb13f05ff45c1680f0e" +SRC_URI[md5sum] = "a85791908e78818bd425ba9ab38500fa" +SRC_URI[sha256sum] = "3d2edbf59367f03cd9daf42939ca06383a7d7803e3993eb5ff1bee8e8a3fbb6b" inherit pypi setuptools3 pkgconfig diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb index d3a9971e4..63a9e35ac 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.2.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb @@ -2,13 +2,15 @@ DESCRIPTION = "McCabe checker, plugin for flake8" HOMEPAGE = "https://github.com/dreamhost/cliff" SECTION = "devel/python" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://README.rst;md5=aa0383f6aee4f5c20084a97cd13164c4" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a489dc62bacbdad3335c0f160a974f0f" -SRC_URI[md5sum] = "5a3f3fa6a4bad126c88aaaa7dab682f5" -SRC_URI[sha256sum] = "5a2a170e47de5593a6abfae1e9542bd2c3924ac62bbe4e6ed96c953c0352243a" +SRC_URI[md5sum] = "723df2f7b1737b8887475bac4c763e1e" +SRC_URI[sha256sum] = "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" inherit pypi setuptools3 +DEPENDS += "${PYTHON_PN}-pytest-runner-native" + RDEPENDS_${PN} += "${PYTHON_PN}-prettytable \ ${PYTHON_PN}-cmd2 \ ${PYTHON_PN}-pyparsing \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.5.0.bb index f040b1a97..e924b0f73 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.4.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-more-itertools_8.5.0.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/erikrose/more-itertools" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5" -SRC_URI[md5sum] = "0912041c05148ed079984cff69af2e99" -SRC_URI[sha256sum] = "68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5" +SRC_URI[md5sum] = "2588b5a7042576b99574779582be9292" +SRC_URI[sha256sum] = "6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20" inherit pypi setuptools3 ptest diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.15.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.16.bb index af011ccf8..a3206f79b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.15.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-msk_0.3.16.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/MycroftAI/mycroft-skills-kit" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://README.md;md5=2f90e43663eddf1c33087419fbb35e28" -SRC_URI[md5sum] = "dcb286c489d24d8b0fb8413835f7478a" -SRC_URI[sha256sum] = "56d3557889ee2ceebc72284f979aa6ddd4c7fbe2af31142eb6f51404f14516d5" +SRC_URI[md5sum] = "8a4fc92a074544f81f482da2c21ef989" +SRC_URI[sha256sum] = "c6a717fc068f7c69ddc8cb21dbeeda7cfa97a4e9f41690459c9fbec68b16ee87" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.8.bb index de930f934..f5e3f59cd 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.7.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-msm_0.8.8.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/MycroftAI/mycroft-skills-manager" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e23fadd6ceef8c618fc1c65191d846fa" -SRC_URI[md5sum] = "16f755ea554c332cdb666dfc1109f7f2" -SRC_URI[sha256sum] = "9878eecbf7255d4907637700ecfeeacb9fe586409ee3ae05d406683ad18d7e5e" +SRC_URI[md5sum] = "cf1fc0d1d86af68003cae53c71ec6288" +SRC_URI[sha256sum] = "a502aee54917cd394217b31c977a1ba3d9541a0120e0a045c49fd77b328e4a29" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.5.bb index 5708e35b5..70573828b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.4.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.5.bb @@ -1,10 +1,10 @@ DESCRIPTION = "Python package for creating and manipulating graphs and networks" HOMEPAGE = "http://networkx.github.io/" LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b68290ee1026b204170a23bbdb27a4fd" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a24ea029adac8935699bf69b2e38c728" -SRC_URI[md5sum] = "63e3fdc9d3a46bcabc776acc5ea5fe48" -SRC_URI[sha256sum] = "f8f4ff0b6f96e4f9b16af6b84622597b5334bf9cae8cf9b2e42e7985d5c95c64" +SRC_URI[md5sum] = "21f25be1f4373e19153a9beca63346e7" +SRC_URI[sha256sum] = "7978955423fbc9639c10498878be59caf99b44dc304c2286162fd24b458c1602" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.8.bb index 5ebd75711..2037d496a 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.7.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.4.8.bb @@ -8,8 +8,8 @@ DEPENDS += "${PYTHON_PN}-wheel-native" PYPI_PACKAGE = "python3-nmap" -SRC_URI[md5sum] = "4dce15e7889b1e9bfa8e1e2e0904795c" -SRC_URI[sha256sum] = "127b7ad604a3fd34578a6ad848a603ccf1608c607577eb3bba097a1e2fc8f48a" +SRC_URI[md5sum] = "e7904b39b64a8a44f275388862659a0d" +SRC_URI[sha256sum] = "8d7da78142bee665289a243f71c5f48407d8ab7e5a02ee672ded05f339044759" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.0.bb new file mode 100644 index 000000000..dae1ebf30 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.0.bb @@ -0,0 +1,9 @@ +SUMMARY = "A case-insensitive ordered dictionary for Python" +HOMEPAGE = "https://github.com/pywbem/nocasedict" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1803fa9c2c3ce8cb06b4861d75310742" + +SRC_URI[md5sum] = "14b405bf7ffe9d0f784aa9c3c39e277b" +SRC_URI[sha256sum] = "22840b434e40f20da6d2ccf0821baba54589e2476499b65420b6e4c2e669aa04" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-nocaselist_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-nocaselist_1.0.2.bb new file mode 100644 index 000000000..8509cd0c9 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-nocaselist_1.0.2.bb @@ -0,0 +1,9 @@ +SUMMARY = "A case-insensitive list for Python" +HOMEPAGE = "https://nocaselist.readthedocs.io/en/latest/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI[md5sum] = "10e58542c1225aff3f057e89e9ae4394" +SRC_URI[sha256sum] = "3cfe964c436991cd6bd9f2cf23375c484ec7cf0c7488471381eff13a4fdac902" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.4.bb index ce2618b81..ae4c10f38 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.3.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.3.4.bb @@ -3,12 +3,11 @@ SECTION = "devel/python" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://ntplib.py;beginline=1;endline=23;md5=afa07338a9595257e94c205c3e72224d" -SRCNAME = "ntplib" -SRC_URI[md5sum] = "c7cc8e9b09f40c84819859d70b7784ca" -SRC_URI[sha256sum] = "c4621b64d50be9461d9bd9a71ba0b4af06fbbf818bbd483752d95c1a4e273ede" +SRC_URI = "git://github.com/cf-natali/ntplib.git" +SRCREV ?= "aea7925c26152024ca8cf207e77f403f8127727a" -S = "${WORKDIR}/${SRCNAME}-${PV}" +S = "${WORKDIR}/git" -inherit setuptools3 python3native pypi +inherit setuptools3 python3native RDEPENDS_${PN} += "${PYTHON_PN}-datetime ${PYTHON_PN}-io" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.5.bb index d0946e49a..0aa9fb020 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.4.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.5.bb @@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148 inherit pypi setuptools3 -SRC_URI[md5sum] = "8491219f6bd83ca6ad8334bf77435cf5" -SRC_URI[sha256sum] = "d88dd1480668019684c66cfff3e52a5de4ed41e9df5dd52e008cbf27af0dbf87" +SRC_URI[md5sum] = "526b7149538575d58e55df1bd37807c1" +SRC_URI[sha256sum] = "18e11f9a650128a12580a58e3daba14e00a11d9e907c554a17ea016bf1a2c71b" RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell ${PYTHON_PN}-jdcal ${PYTHON_PN}-et-xmlfile" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.1.2.bb index 7d65287cb..1eade9884 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.1.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.1.2.bb @@ -6,8 +6,8 @@ HOMEPAGE = "http://pandas.pydata.org/" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=c2a8f987b2ce77c368c6b3e1b5b10774" -SRC_URI[md5sum] = "512da48424b85bf198002bdbdf38af5a" -SRC_URI[sha256sum] = "b39508562ad0bb3f384b0db24da7d68a2608b9ddc85b1d931ccaaa92d5e45273" +SRC_URI[md5sum] = "b4ce7c64f549ed48b47877fc64281031" +SRC_URI[sha256sum] = "b64ffd87a2cfd31b40acd4b92cb72ea9a52a48165aec4c140e78fd69c45d1444" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.2.bb index 0ead23608..324847c31 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.2.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/paramiko/paramiko/" LICENSE = "LGPL-2.1" LIC_FILES_CHKSUM = "file://LICENSE;md5=fd0120fc2e9f841c73ac707a30389af5" -SRC_URI[md5sum] = "bf8239dc820ca86dd3c3226f4281c35f" -SRC_URI[sha256sum] = "920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f" +SRC_URI[md5sum] = "44136d79da4cd7619e368018ad022619" +SRC_URI[sha256sum] = "7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035" PYPI_PACKAGE = "paramiko" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.18.0.bb index a1e945276..ed9204e3b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.16.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse_1.18.0.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/r1chardj0n3s/parse" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=8ab458ad281b60e6f1b39b3feafbfc05" -SRC_URI[md5sum] = "ba263b3143e9528ae960bbba4d56bf25" -SRC_URI[sha256sum] = "cd89e57aed38dcf3e0ff8253f53121a3b23e6181758993323658bffc048a5c19" +SRC_URI[md5sum] = "42ea0002cf36bfd2bd74f3c05bf25f60" +SRC_URI[sha256sum] = "91666032d6723dc5905248417ef0dc9e4c51df9526aaeef271eacad6491f06a4" inherit pypi setuptools3 ptest diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch index 35aee4214..005fea5c6 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow/0001-explicitly-set-compile-options.patch @@ -1,6 +1,6 @@ -From 862a981ce462cd83a99e3db9faeeda1f8c64983f Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Mon, 18 Mar 2019 23:23:55 -0400 +From 27bfa4028453dc79a72569823e97da8fd1994ffc Mon Sep 17 00:00:00 2001 +From: Leon Anavi <leon.anavi@konsulko.com> +Date: Tue, 1 Sep 2020 11:53:53 +0000 Subject: [PATCH] explicitly set compile options OE does not support to install egg package, so @@ -10,19 +10,19 @@ explicitly set build_ext options for oe-core's Upstream-Status: Inappropriate [oe specific] Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> - +Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> --- setup.cfg | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/setup.cfg b/setup.cfg -index 1c6ebc84..1ccc3d69 100644 +index 19979cf7..ed27dfe1 100644 --- a/setup.cfg +++ b/setup.cfg -@@ -13,3 +13,15 @@ multi_line_output = 3 - +@@ -11,3 +11,15 @@ multi_line_output = 3 [tool:pytest] - addopts = -rs + addopts = -ra --color=yes + testpaths = Tests + +[build_ext] +disable-platform-guessing = 1 @@ -35,3 +35,6 @@ index 1c6ebc84..1ccc3d69 100644 +disable-webp = 1 +disable-webpmux = 1 +disable-imagequant = 1 +-- +2.17.1 + diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_6.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_7.2.0.bb index a383a3ff9..13cab4300 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_6.2.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_7.2.0.bb @@ -3,13 +3,13 @@ Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and \ Contributors." HOMEPAGE = "https://pillow.readthedocs.io" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=55c0f320370091249c1755c0d2b48e89" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ea2dc3f5611e69058503d4b940049d03" -SRC_URI = "git://github.com/python-pillow/Pillow.git;branch=6.2.x \ +SRC_URI = "git://github.com/python-pillow/Pillow.git;branch=7.2.x \ file://0001-support-cross-compiling.patch \ file://0001-explicitly-set-compile-options.patch \ " -SRCREV ?= "6e0f07bbe38def22d36ee176b2efd9ea74b453a6" +SRCREV ?= "2bd74943fb9f320def6c066e732b701d1c15f677" inherit setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.14.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.16.bb index 333b015a9..7775d733a 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.14.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.16.bb @@ -10,8 +10,8 @@ PYPI_PACKAGE := "Pint" inherit pypi ptest setuptools3 -SRC_URI[md5sum] = "e5e409806bc82f518230117b30ae23ed" -SRC_URI[sha256sum] = "9aa450ebb9d722ed03fa9a450104cfd16c479b49f862d547c6f77320de597f72" +SRC_URI[md5sum] = "ec78e4e42512b93f80b9093416ad7417" +SRC_URI[sha256sum] = "e437420e65fa72a2805f4036f986669c48d54944eeb0e47c8ba16f98cbdcd599" DEPENDS += "python3-setuptools-scm-native" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.7.bb index 806e67c09..7b0d1a069 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.6.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.7.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://python-prompt-toolkit.readthedocs.io/" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f" -SRC_URI[md5sum] = "e50cb328715b338480d8d29dda54ff5d" -SRC_URI[sha256sum] = "7630ab85a23302839a0f26b31cc24f518e6155dea1ed395ea61b42c45941b6a6" +SRC_URI[md5sum] = "f1b34c688ef7dccccb951130f008f6fe" +SRC_URI[sha256sum] = "822f4605f28f7d2ba6b0b09a31e25e140871e96364d1d377667b547bb3bf4489" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_7.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_7.3.0.bb index 257778ba9..b444df05d 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_7.2.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_7.3.0.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/balloob/pychromecast" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5" -SRC_URI[md5sum] = "20ed7ec024fd4739446d42f8d19813b8" -SRC_URI[sha256sum] = "c522c5ecb554471ca8e5690c05530b1c237c301349061d3839c506984f8d3c2d" +SRC_URI[md5sum] = "7ab862743ff33dafc93206c1435abc5e" +SRC_URI[sha256sum] = "f594231efb34b86eeb463611662bca21a6962793885d3ad68195286940f7473d" PYPI_PACKAGE = "PyChromecast" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.6.bb index 5a1c1797a..0437a6cc9 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.5.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.43.0.6.bb @@ -12,8 +12,8 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL;md5=4fbd65380cdd255951079008b364516c \ file://COPYING-MIT;md5=60872a112595004233b769b6cbfd65b6 \ " -SRC_URI[md5sum] = "0b387d4609ed20c88baede8579a4d425" -SRC_URI[sha256sum] = "ec7dd291545842295b7b56c12c90ffad2976cc7070c98d7b1517b7b6cd5994b3" +SRC_URI[md5sum] = "3e121d895101022c30619e1bbf97eb97" +SRC_URI[sha256sum] = "8301518689daefa53726b59ded6b48f33751c383cf987b0ccfbbc4ed40281325" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydicti_1.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydicti_1.1.3.bb new file mode 100644 index 000000000..bca0ba737 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydicti_1.1.3.bb @@ -0,0 +1,9 @@ +SUMMARY = "Case insensitive derivable dictionary" +HOMEPAGE = "https://github.com/coldfix/pydicti" +LICENSE = "WTFPL" +LIC_FILES_CHKSUM = "file://COPYING;md5=389a9e29629d1f05e115f8f05c283df5" + +SRC_URI[md5sum] = "b02ed35da91e400f1f17a57ab02ba06b" +SRC_URI[sha256sum] = "eea50576baa751a9b6b862f09f081c47d557e0298623ca8742851da72b00eec4" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.128.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.131.bb index e27bf9900..82ab80314 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.128.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.131.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/MISP/PyMISP" LICENSE = "BSD-2-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20" -SRC_URI[md5sum] = "a90a25def591c6a265bc904f801646f1" -SRC_URI[sha256sum] = "714b8b5c8debb4b5e0e602a5fe8a599206e89c1313244ed0e69d9e0bc816f1f7" +SRC_URI[md5sum] = "8844204f8b059ff2fc508ba9ac07dcb2" +SRC_URI[sha256sum] = "59adb7ee95bfb1b5c35abbc01b5372df7327baea4a8df9efe30140ea64b73c18" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.10.1.bb index 895c47b03..15ace44ac 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.10.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymysql_0.10.1.bb @@ -8,8 +8,8 @@ HOMEPAGE = "https://pymysql.readthedocs.io" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=528175c84163bb800d23ad835c7fa0fc" -SRC_URI[md5sum] = "d08058b1592724d5808c43f56050f245" -SRC_URI[sha256sum] = "e14070bc84e050e0f80bf6063e31d276f03a0bb4d46b9eca2854566c4ae19837" +SRC_URI[md5sum] = "4a1fe973afbbdd78928650118ce8ff68" +SRC_URI[sha256sum] = "263040d2779a3b84930f7ac9da5132be0fefcd6f453a885756656103f8ee1fdd" PYPI_PACKAGE = "PyMySQL" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.14.bb index 4fb401957..84397b65b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.13.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.14.bb @@ -3,8 +3,8 @@ LICENSE = "GPLv2 & Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.GPL.v2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://LICENSE.Apache.v2;md5=34281e312165f843a2b7d1f114fe65ce" -SRC_URI[md5sum] = "6c72ffa7147bbfa1610942e5734c8c87" -SRC_URI[sha256sum] = "518365f3313e73b0f024b9fa7a580b29bfa2fe2c5230be0bc69c068bbf6637e9" +SRC_URI[md5sum] = "6bde3624a6f22bdfb630bb54243a0d1d" +SRC_URI[sha256sum] = "774c5ecf05fe40f0f601a7ab33c19ca0b24f00bf4a094e58deaa5333b7ca49b5" inherit setuptools3 pypi ptest diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.17.3.bb index dec661143..72736c891 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.16.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.17.3.bb @@ -3,14 +3,13 @@ HOMEPAGE = "https://github.com/tobgu/pyrsistent" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENCE.mit;md5=ca574f2891cf528b3e7a2ee570337e7c" -SRC_URI[md5sum] = "4ba30da6f0a63554e70ac6c4c1904929" -SRC_URI[sha256sum] = "28669905fe725965daa16184933676547c5bb40a5153055a8dee2a4bd7933ad3" +SRC_URI[md5sum] = "cd38658ea772a7f9b12b6f9485a7018b" +SRC_URI[sha256sum] = "2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e" inherit pypi setuptools3 RDEPENDS_${PN} += " \ ${PYTHON_PN}-numbers \ - ${PYTHON_PN}-six \ " BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb deleted file mode 100644 index 44c24f423..000000000 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.0.2.bb +++ /dev/null @@ -1,12 +0,0 @@ -SUMMARY = "PyUSB provides USB access on the Python language" -HOMEPAGE = "http://pyusb.sourceforge.net/" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=51691ed11cc2c7ae93e383f60ed49b0f" -DEPENDS += "libusb1" - -SRC_URI[md5sum] = "862b56452c64948c787ad8ef9498590b" -SRC_URI[sha256sum] = "4e9b72cc4a4205ca64fbf1f3fff39a335512166c151ad103e55c8223ac147362" - -inherit pypi setuptools3 - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.1.0.bb new file mode 100644 index 000000000..6b48d6a25 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.1.0.bb @@ -0,0 +1,12 @@ +SUMMARY = "PyUSB provides USB access on the Python language" +HOMEPAGE = "http://pyusb.sourceforge.net/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c52a96fd9a0cadcb9270904c8eb5416c" +DEPENDS += "libusb1 ${PYTHON_PN}-setuptools-scm-native" + +SRC_URI[md5sum] = "3b2e38e9f697d2f90d86376bd10a9505" +SRC_URI[sha256sum] = "d69ed64bff0e2102da11b3f49567256867853b861178689671a163d30865c298" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_17.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_19.0.2.bb index 2369f067e..3c4e32b5e 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_17.1.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_19.0.2.bb @@ -8,8 +8,8 @@ DEPENDS = "zeromq" FILESEXTRAPATHS_prepend := "${THISDIR}/python-pyzmq:" SRC_URI += "file://club-rpath-out.patch" -SRC_URI[md5sum] = "aecdfc328193fbd81f6dc23228319943" -SRC_URI[sha256sum] = "2199f753a230e26aec5238b0518b036780708a4c887d4944519681a920b9dee4" +SRC_URI[md5sum] = "200abc1a75bdcfff7adf61304f46f55e" +SRC_URI[sha256sum] = "296540a065c8c21b26d63e3cea2d1d57902373b16e4256afe46422691903a438" inherit pypi pkgconfig setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.2.2.bb index a5e3a2a4f..10f031c7b 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.2.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_3.2.2.bb @@ -12,8 +12,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" inherit pypi setuptools3 PYPI_PACKAGE_EXT = "zip" -SRC_URI[md5sum] = "ac8aaad885e48c6b6cd5461be5b8149f" -SRC_URI[sha256sum] = "d693e6d06b17f48669e2a8c4cb6c1f0d56e5f1a74835d18b8ea2118da7bf2d79" +SRC_URI[md5sum] = "ac6b77c223821856e8ac077acf5a7c1d" +SRC_URI[sha256sum] = "a0786a916d0572bd9d6afe26e95c6021e3df5dcafa0ece6b302e36366e58c24e" RDEPENDS_${PN} += " \ ${PYTHON_PN}-shell \ diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.12.bb index 076721a09..ec8545dae 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.10.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.16.12.bb @@ -8,8 +8,8 @@ PYPI_PACKAGE = "ruamel.yaml" inherit pypi setuptools3 -SRC_URI[md5sum] = "02774e7ed3273b3d8eee6c08326b91c4" -SRC_URI[sha256sum] = "099c644a778bf72ffa00524f78dd0b6476bca94a1da344130f4bf3381ce5b954" +SRC_URI[md5sum] = "c7e4b216d9554d80be42011b448b7c61" +SRC_URI[sha256sum] = "076cc0bc34f1966d920a49f18b52b6ad559fbe656a0748e3535cf7b3f29ebf9e" do_install_prepend() { export RUAMEL_NO_PIP_INSTALL_CHECK=1 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.16.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.17.5.bb index ad01f6f5b..5495fa0d3 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.16.5.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_0.17.5.bb @@ -5,8 +5,8 @@ HOMEPAGE = "https://github.com/getsentry/sentry-python" LICENSE = "BSD-2-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=0c79f8d3c91fc847350efd28bfe0a341" -SRC_URI[md5sum] = "6d65fda758929b6a8d16e6030302c811" -SRC_URI[sha256sum] = "e12eb1c2c01cd9e9cfe70608dbda4ef451f37ef0b7cbb92e5d43f87c341d6334" +SRC_URI[md5sum] = "dcdf0d4f84f4f6ea02ad3f15dfcff2d9" +SRC_URI[sha256sum] = "02f2a72698453f722b102562eb6430d2a82d6c6c40f2b991ed69e7628142de6a" PYPI_PACKAGE = "sentry-sdk" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.13.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.14.0.bb index 2a6d9bcc6..7724f4be0 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.13.1.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sh_1.14.0.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://github.com/amoffat/sh" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5317094292296f03405f59ae5f6544b6" -SRC_URI[md5sum] = "7e3dd3a6b49c06db93746994a68cb8cf" -SRC_URI[sha256sum] = "97a3d2205e3c6a842d87ebbc9ae93acae5a352b1bc4609b428d0fd5bb9e286a3" +SRC_URI[md5sum] = "4cbbcb85c081d78f4b0f00d634db9bb9" +SRC_URI[sha256sum] = "05c7e520cdf70f70a7228a03b589da9f96c6e0d06fc487ab21fc62b26a592e59" PYPI_PACKAGE = "sh" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.2.2.bb index 0a2bffdcc..18eae3532 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.2.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.2.2.bb @@ -3,8 +3,8 @@ HOMEPAGE = "https://docs.openstack.org/stevedore/latest/" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" -SRC_URI[md5sum] = "6a39764d7aecc63a0990cf4635cb430d" -SRC_URI[sha256sum] = "38791aa5bed922b0a844513c5f9ed37774b68edc609e5ab8ab8d8fe0ce4315e5" +SRC_URI[md5sum] = "c78357a02888490ef27a0d898eb97172" +SRC_URI[sha256sum] = "f845868b3a3a77a2489d226568abe7328b5c2d4f6a011cc759dfa99144a521f0" DEPENDS += "${PYTHON_PN}-pbr-native" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb index 78ec43156..6914cf920 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb @@ -1,3 +1,20 @@ -require python-systemd.inc -RDEPENDS_${PN} += "python3-syslog" -inherit setuptools3 +SUMMARY = "Python interface for libsystemd" +HOMEPAGE = "https://github.com/systemd/python-systemd" +LICENSE = "LGPLv2.1+" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fbd65380cdd255951079008b364516c" + +PYPI_PACKAGE = "systemd-python" +DEPENDS += "systemd (<=234)" +RDEPENDS_${PN} += "systemd ${PYTHON_PN}-syslog ${PYTHON_PN}-logging python3-syslog" +REQUIRED_DISTRO_FEATURES = "systemd" +inherit pypi features_check setuptools3 + +SRC_URI[md5sum] = "5071ea5bcb976186e92a3f5e75df221d" +SRC_URI[sha256sum] = "fd0e44bf70eadae45aadc292cb0a7eb5b0b6372cd1b391228047d33895db83e7" + +# allow for common patches for python- and python3-systemd +FILESEXTRAPATHS_prepend := "${THISDIR}/python-systemd:" + +SRC_URI += "file://endian.patch" + +SRC_URI_append_libc-musl = " file://0001-Provide-implementation-of-strndupa-for-musl.patch" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tabulate_0.8.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tabulate_0.8.7.bb new file mode 100644 index 000000000..def35ff44 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tabulate_0.8.7.bb @@ -0,0 +1,9 @@ +SUMMARY = "Pretty-print tabular data" +HOMEPAGE = "https://github.com/astanin/python-tabulate" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=fad5a39bdfe452b13775adda41023ba7" + +SRC_URI[md5sum] = "a766c6eecfe3765821909c4ddf082b3b" +SRC_URI[sha256sum] = "db2723a20d04bcda8522165c73eea7c300eda74e0ce852d9022e0159d7895007" + +inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator/run-ptest new file mode 100644 index 000000000..5cec71169 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator/run-ptest @@ -0,0 +1,3 @@ +#!/bin/sh + +pytest diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb index 14943a4bd..a83ee5efc 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-test-generator_0.1.2.bb @@ -5,10 +5,24 @@ parsers that prevent any potentially malicious operation." LICENSE = "ISC" LIC_FILES_CHKSUM = "file://LICENSE;md5=041a2bff595d40ccb4b36356f89dab00" +SRC_URI += " \ + file://run-ptest \ +" + SRC_URI[md5sum] = "6c69e73ba5b4b3ed62f7bcda071c64f1" SRC_URI[sha256sum] = "ad5925c814bfe79497b43df096e3bb52c166d1577f7aff160137301676232f4a" -inherit pypi setuptools3 +inherit pypi setuptools3 ptest + +RDEPENDS_${PN}-ptest += " \ + ${PYTHON_PN}-pytest \ + ${PYTHON_PN}-mock \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} DEPENDS += "python3-nose-native" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.3.bb new file mode 100644 index 000000000..03ebd010e --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.3.bb @@ -0,0 +1,11 @@ +SUMMARY = "module for creating simple ASCII tables" +HOMEPAGE = "https://github.com/foutaise/texttable/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7a97cdac2d9679ffdcfef3dc036d24f6" + +inherit pypi setuptools3 + +SRC_URI[md5sum] = "68e6b31d36f5c20221da7d5db3eca772" +SRC_URI[sha256sum] = "ce0faf21aa77d806bbff22b107cc22cce68dc9438f97a2df32c93e9afa4ce436" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.48.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.49.0.bb index 831468095..26eb1073d 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.48.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.49.0.bb @@ -5,8 +5,8 @@ SECTION = "devel/python" LICENSE = "MIT & MPL-2.0" LIC_FILES_CHKSUM = "file://LICENCE;md5=7ea57584e3f8bbde2ae3e1537551de25" -SRC_URI[md5sum] = "d29c836d74d2f2ec6a10d052937f7371" -SRC_URI[sha256sum] = "564d632ea2b9cb52979f7956e093e831c28d441c11751682f84c86fc46e4fd21" +SRC_URI[md5sum] = "c2afde3f1d5aa108376fdd0f4b20821d" +SRC_URI[sha256sum] = "faf9c671bd3fad5ebaeee366949d969dca2b2be32c872a7092a1e1a9048d105b" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-trafaret_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-trafaret_2.1.0.bb index 4e814073b..96602016e 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-trafaret_2.0.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-trafaret_2.1.0.bb @@ -3,7 +3,8 @@ SUMMARY = "Ultimate transformation library that supports validation, contexts an LICENSE = "BSD-2-Clause" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=21ecc7aa8f699874e706fc1354903437" -SRC_URI[sha256sum] = "61dfc25b574f70bfdf7ee3a808ec423061811c13a10b8d3c9e11ab539b96ab65" +SRC_URI[sha256sum] = "72c342ede27fb34cd219b62855119380ae1c87006b6106be163c01159eb955ff" +SRC_URI[md5sum] = "228675376012fb27dd7f70ab685e7766" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_4.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.0.4.bb index edfb3abfa..194193f63 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_4.3.3.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.0.4.bb @@ -6,12 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING.md;md5=eec4de4d599518742e54e75954e33b46" PYPI_PACKAGE = "traitlets" -SRC_URI[md5sum] = "3a4f263af65d3d79f1c279f0247077ef" -SRC_URI[sha256sum] = "d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" +SRC_URI[md5sum] = "592dde72b6b706d09ea624cce9af3cf5" +SRC_URI[sha256sum] = "86c9351f94f95de9db8a04ad8e892da299a088a64fd283f9f6f18770ae5eae1b" RDEPENDS_${PN} = "\ ${PYTHON_PN}-ipython-genutils \ - ${PYTHON_PN}-six \ ${PYTHON_PN}-decorator \ " diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.9.0.bb index 78f66a443..01bbf831a 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.8.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.9.0.bb @@ -2,10 +2,10 @@ SUMMARY = "Twitter for Python" DESCRIPTION = "Python module to support twitter API" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://PKG-INFO;md5=8f702b489acb6863cec8b261a55931d8" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489" -SRC_URI[md5sum] = "8aeff278b7cefcd384c65929bc921e2c" -SRC_URI[sha256sum] = "8abd828ba51a85a2b5bb7373715d6d3bb32d18ac624e3a4db02e4ef8ab48316b" +SRC_URI[md5sum] = "b5bc640fa9f6baff6471c127aba1fec0" +SRC_URI[sha256sum] = "bfd19a5c11f35f7f199c795f99d9cbf8a52eb33f0ecfb6c91ee10b601180f604" PYPI_PACKAGE = "tweepy" diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.3.bb index 51e9eda2e..8ef15fab7 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.2.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.7.4.3.bb @@ -5,8 +5,8 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f" # The name on PyPi is slightly different. PYPI_PACKAGE = "typing_extensions" -SRC_URI[md5sum] = "f2674282966dc088d10170c2347431cc" -SRC_URI[sha256sum] = "79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae" +SRC_URI[md5sum] = "5fcbfcb22e6f8c9bf23fb9f8e020f6ee" +SRC_URI[sha256sum] = "99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c" inherit pypi setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_3.2.0.bb index ef57b2a1f..e1d7d9d79 100644 --- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_3.1.0.bb +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_3.2.0.bb @@ -4,8 +4,8 @@ DESCRIPTION = "UltraJSON is an ultra fast JSON encoder and decoder written in pu LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=10fa10456417c0252bcb8a498e498ffe" -SRC_URI[md5sum] = "875ac729018f3cac786d471422306fa8" -SRC_URI[sha256sum] = "00bda1de275ed6fe81817902189c75dfd156b4fa29b44dc1f4620775d2f50cf7" +SRC_URI[md5sum] = "a524264ef4069e18d742e32e90845a3f" +SRC_URI[sha256sum] = "abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4" inherit pypi ptest setuptools3 diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_0.5.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_0.5.5.bb new file mode 100644 index 000000000..dbf84d413 --- /dev/null +++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_0.5.5.bb @@ -0,0 +1,13 @@ +SUMMARY = "Ordered YAML loader and dumper for PyYAML." +HOMEPAGE = "https://github.com/Phynix/yamlloader" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6831ef36faa29329bce2420c5356f97e" + +SRC_URI[md5sum] = "2e0750ace81235f750c072833d79c4c3" +SRC_URI[sha256sum] = "dcab5f16b39bb03d10dda4cd4f30c943675ec4c7771807fc67e7f1bb319bf4c8" + +inherit pypi setuptools3 + +RDEPENDS_${PN}_class-target += "\ + ${PYTHON_PN}-pyyaml \ +" diff --git a/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.48.bb b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.49.bb index 9ca7a56bd..7fba21f7d 100644 --- a/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.48.bb +++ b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.49.bb @@ -3,6 +3,7 @@ DESCRIPTION = "The python-meh package is a python library for handling, saving, exceptions." HOMEPAGE = "http://git.fedorahosted.org/git/?p=python-meh.git" LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" inherit setuptools3 @@ -10,8 +11,7 @@ S = "${WORKDIR}/git" SRC_URI = "git://github.com/rhinstaller/python-meh.git;protocol=https;branch=master \ " -SRCREV = "760f78a634ecf0e2380abcbd751bc233d29300ef" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" +SRCREV = "50c09e5c4c76757099d686c316b4bf42f72db71b" FILES_${PN} += "${datadir}/*" diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_0.17.4.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.0.2.bb index a804b0cc0..da731989d 100644 --- a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_0.17.4.bb +++ b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.0.2.bb @@ -16,8 +16,8 @@ HOMEPAGE = "http://pywbem.github.io" LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=fbc093901857fcd118f065f900982c24" -SRC_URI[md5sum] = "b65c03026bf2174e58e3e47a5e7e4825" -SRC_URI[sha256sum] = "5b54b65a5434bb16432415743c0d154feee0c6d7a8a2fee208719c67d6d24c97" +SRC_URI[md5sum] = "0f171e365e294554f8e7624ccf511067" +SRC_URI[sha256sum] = "66d8ec82d30f2b95d8b4bd51659429066c2879d3f46292561f5fdbc7fed10f3d" inherit pypi setuptools3 update-alternatives @@ -27,12 +27,6 @@ DEPENDS += " \ ${PYTHON_PN}-six-native \ " -do_install_append() { - mv ${D}${bindir}/wbemcli.py ${D}${bindir}/pywbemcli - - rm -f ${D}${bindir}/*.bat -} - RDEPENDS_${PN}_class-target += "\ ${PYTHON_PN}-datetime \ ${PYTHON_PN}-io \ @@ -46,10 +40,8 @@ RDEPENDS_${PN}_class-target += "\ ${PYTHON_PN}-xml \ " -ALTERNATIVE_${PN} = "mof_compiler pywbemcli wbemcli" +ALTERNATIVE_${PN} = "mof_compiler" ALTERNATIVE_TARGET[mof_compiler] = "${bindir}/mof_compiler" -ALTERNATIVE_TARGET[pywbemcli] = "${bindir}/pywbemcli" -ALTERNATIVE_TARGET[wbemcli] = "${bindir}/wbemcli" ALTERNATIVE_PRIORITY = "60" diff --git a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_0.7.1.bb b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_0.7.1.bb new file mode 100644 index 000000000..05f77288e --- /dev/null +++ b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_0.7.1.bb @@ -0,0 +1,40 @@ +SUMMARY = "A set of tools using pywbem" +DESCRIPTION = "A set of tools using pywbem to communicate with WBEM servers" +HOMEPAGE = "https://pywbemtools.readthedocs.io/en/stable/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa" + +SRC_URI[md5sum] = "a789da735c04ddc08ba828cd8022243e" +SRC_URI[sha256sum] = "d2fe776c78a740215142f4f033055093f2283fd9327440c59734716e51e19989" + +inherit pypi setuptools3 + +DEPENDS += " \ + ${PYTHON_PN}-pyyaml-native \ + ${PYTHON_PN}-pywbem-native \ + ${PYTHON_PN}-six-native \ + ${PYTHON_PN}-click-native \ +" + +RDEPENDS_${PN}_class-target += "\ + ${PYTHON_PN}-ply \ + ${PYTHON_PN}-pyyaml \ + ${PYTHON_PN}-six \ + ${PYTHON_PN}-pywbem \ + ${PYTHON_PN}-click \ + ${PYTHON_PN}-requests \ + ${PYTHON_PN}-prompt-toolkit \ + ${PYTHON_PN}-mock \ + ${PYTHON_PN}-packaging \ + ${PYTHON_PN}-nocasedict \ + ${PYTHON_PN}-yamlloader \ + ${PYTHON_PN}-click-repl \ + ${PYTHON_PN}-click-spinner \ + ${PYTHON_PN}-asciitree \ + ${PYTHON_PN}-tabulate \ + ${PYTHON_PN}-pydicti \ + ${PYTHON_PN}-nocaselist \ + ${PYTHON_PN}-custom-inherit \ +" + +BBCLASSEXTEND = "native" diff --git a/meta-openembedded/meta-webserver/recipes-core/packagesgroups/packagegroup-meta-webserver.bb b/meta-openembedded/meta-webserver/recipes-core/packagesgroups/packagegroup-meta-webserver.bb index f5d5debe1..e3e68582c 100644 --- a/meta-openembedded/meta-webserver/recipes-core/packagesgroups/packagegroup-meta-webserver.bb +++ b/meta-openembedded/meta-webserver/recipes-core/packagesgroups/packagegroup-meta-webserver.bb @@ -19,20 +19,31 @@ RDEPENDS_packagegroup-meta-webserver = "\ " RDEPENDS_packagegroup-meta-webserver-http = "\ - nginx monkey hiawatha nostromo apache-websocket \ - apache2 sthttpd \ + apache-websocket \ + apache2 \ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "cherokee", "", d)} \ - " + hiawatha \ + monkey \ + nginx \ + nginx \ + nostromo \ + sthttpd \ +" RDEPENDS_packagegroup-meta-webserver-php = "\ - phpmyadmin xdebug \ - " + phpmyadmin \ + xdebug \ +" RDEPENDS_packagegroup-meta-webserver-support = "\ - spawn-fcgi fcgi \ - " + spawn-fcgi \ + fcgi \ +" RDEPENDS_packagegroup-meta-webserver-webadmin = "\ - netdata webmin \ - " + cockpit \ + webmin \ + netdata \ +" + EXCLUDE_FROM_WORLD = "1" diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.43.bb b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.46.bb index a7083d80e..197cb83e6 100644 --- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.43.bb +++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.46.bb @@ -26,8 +26,8 @@ SRC_URI_append_class-target = " \ " LIC_FILES_CHKSUM = "file://LICENSE;md5=bddeddfac80b2c9a882241d008bb41c3" -SRC_URI[md5sum] = "791c986b1e70fe61eb44060aacc89a64" -SRC_URI[sha256sum] = "a497652ab3fc81318cdc2a203090a999150d86461acff97c1065dc910fe10f43" +SRC_URI[md5sum] = "7d661ea5e736dac5e2761d9f49fe8361" +SRC_URI[sha256sum] = "740eddf6e1c641992b22359cabc66e6325868c3c5e2e3f98faf349b61ecf41ea" S = "${WORKDIR}/httpd-${PV}" diff --git a/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init b/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init index 40b21182e..55446f0e8 100644 --- a/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init +++ b/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init @@ -1,7 +1,7 @@ #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/bin/monkey +DAEMON=/usr/sbin/monkey NAME=monkey DESC="Monkey HTTP Server" OPTS="--daemon" diff --git a/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service b/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service index f9aa57f91..4f3b7be4e 100644 --- a/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service +++ b/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service @@ -4,7 +4,7 @@ After=network.target remote-fs.target [Service] Type=forking -ExecStart=/usr/bin/monkey --daemon +ExecStart=/usr/sbin/monkey --daemon PIDFile=/var/run/monkey.pid.2001 TimeoutSec=10 diff --git a/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.6.9.bb b/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.6.9.bb index 289f069b1..698f8608f 100644 --- a/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.6.9.bb +++ b/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.6.9.bb @@ -39,6 +39,7 @@ OECMAKE_GENERATOR = "Unix Makefiles" do_install_append() { rm -rf ${D}/run + rm -rf ${D}${localstatedir}/run install -Dm 0755 ${WORKDIR}/monkey.init ${D}${sysconfdir}/init.d/monkey if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then diff --git a/meta-openembedded/meta-xfce/conf/layer.conf b/meta-openembedded/meta-xfce/conf/layer.conf index 199c69e7b..7e4bb178e 100644 --- a/meta-openembedded/meta-xfce/conf/layer.conf +++ b/meta-openembedded/meta-xfce/conf/layer.conf @@ -20,3 +20,10 @@ LAYERDEPENDS_xfce-layer += "meta-python" LAYERDEPENDS_xfce-layer += "networking-layer" LAYERSERIES_COMPAT_xfce-layer = "thud warrior zeus dunfell" + +SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\ + openzone->gdk-pixbuf \ + openzone->gtk+3 \ + rodent-icon-theme->gdk-pixbuf \ + rodent-icon-theme->gtk+3 \ +" |